草庐IT

Ruby 的异常错误类

您可以创建异常的子类以使其更具描述性,但是您应该如何设置默认的“消息”?classMyErrorepe.messageendbeginraiseMyErrorraiseException=>epe.messageend第一个应该输出'Acustommessage'第二个应该输出'You'vetriggeredaMyError'关于最佳实践有什么建议吗? 最佳答案 定义一个初始化方法,它将消息作为具有默认值的参数。然后使用该消息调用StandardError的初始化方法(使用super)。classMyError

javascript - 自定义错误格式

我实现了自己的自定义错误:functionMyError(){vartemp=Error.apply(this,arguments);temp.name=this.name='MyError';this.stack=temp.stack;this.message=temp.message;}MyError.prototype=Object.create(Error.prototype,{constructor:{value:MyError,writable:true,configurable:true}});我缺少的是让它在屏幕上显示自己,就像发生常规未处理错误时那样,即如果我们thr

pointers - 为什么我的自定义错误类型会导致特定模式的错误?

这个问题在这里已经有了答案:MethodSets(PointervsValueReceiver)(3个答案)关闭4年前。我正在为go的接收器和指针而苦苦挣扎。我发现第4种模式会导致错误。为什么这种模式会导致错误,有什么区别?提前致谢。typeMyErrorstruct{}//OKpatternfunc(eMyError)Error()string{return"somethingbadhappened"}funcrun()error{returnMyError{}}//OKpatternfunc(eMyError)Error()string{return"somethingbadhap

go - fmt.Print(myError) 没有隐式调用 Error()?

我想打印我的自定义错误结构中的所有内容,例如fmt.Print()打印任何其他结构,但由于它实现了error它只打印一个字段,我通过Error()传递了一个。我该怎么做? 最佳答案 您可以将error接口(interface)类型断言到您的自定义类型。请注意,理想情况下,您应该在执行此操作时使用“comma,ok”习惯用法,否则如果类型断言失败,您的应用程序将崩溃。packagemainimport"fmt"typeMyErrorstruct{StatusintMessagestring}func(eMyError)Error()s

go - 为什么错误类型上的类型开关不起作用?

代码:typebaseStructstruct{valueint}typemyStructbaseStructfunccheckType(valueinterface{}){switchvalue.(type){casemyStruct:fmt.Printf("%visamyStruct\n",value)default:fmt.Printf("%vissomethingelse\n",value)}}funcmain(){checkType(*new(baseStruct))checkType(myStruct(*new(baseStruct)))}输出如下:{0}issomethi

javascript - 在 V8 中从 C++ 代码创建自定义错误类

我想在原生NodeJS(0.11.5)扩展中创建自定义异常。我正在尝试在V8(3.20.11)中创建内置Error类的子类。基本上,我正在寻找与以下Javascript代码等效的C++:functionMyError(message){Error.apply(this,arguments);this.message=message;}MyError.prototype=newError;MyError.prototype.name=MyError.name;newMyError("message")我尝试挖掘V8源代码,发现以下辅助方法似乎可以完成我想要的部分操作:HandleFact

C++ 异常和 ld 符号警告

我正在尝试用C++创建异常,我有以下测试代码:#include#include#includeusingnamespacestd;classMyerror:publicruntime_error{private:stringerrmsg;public:Myerror(conststring&message):runtime_error(message){}};intmain(intargc,char*argv[]){throwMyerror("wassup?");}我正在编译这个:icpc-std=c++11-O3-m64编译后我收到这个ld警告:ld:warning:directac

android - Kotlin 类型不匹配编译错误 : Require Success<T>, Found MyError

我遇到以下代码无法在kotlin中编译的问题。//StateModel.ktsealedclassStateModelclassLoading:StateModel()dataclassSuccess(valdata:T):StateModel()dataclassMyError(valmessage:String):StateModel()//StateModelTransformer.ktclassStateModelTransformer:FlowableTransformer{overridefunapply(upstream:Flowable):Publisher{retur

Swift 3 - 接住并抛出

在处理throws的函数时,我们使用do-catch来处理可能的错误。假设我们正在编写一个函数并且我们希望该函数传播错误:publicfuncmyFunc()throws{do{letobj=tryconvert(param:42)//workwithobj...}catch{print("failed:\(String(describing:error))")throwMyError.ConversionFailed}}太好了。但是,假设现在我们在myFunc中有自定义逻辑,可能会导致函数抛出不同类型的错误:publicfuncmyFunc()throws{do{letobj=try

GoLang 错误/接口(interface)机制

首先,我不太确定这个问题是与错误相关,还是与GoLang中的接口(interface)相关我正在按照教程学习GoLang。本教程中出现了问题page这是错误接口(interface)的基本演示。当我像这样更改代码时,我感到困惑:packagemainimport("fmt""time")typeMyErrorstruct{Whentime.TimeWhatstring}func(e*MyError)Error()string{returnfmt.Sprintf("at%v,%s",e.When,e.What)}funcrun()*MyError{return&MyError{time.
12