Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Exception Kotlin-引发自定义异常_Exception_Kotlin - Fatal编程技术网

Exception Kotlin-引发自定义异常

Exception Kotlin-引发自定义异常,exception,kotlin,Exception,Kotlin,如何在Kotlin中抛出自定义异常?我没有从医生那里得到那么多 在文档中,描述了每个异常需要什么,但我如何具体实现它?如下: 实施 用法 fun main(args:Array){ 在线程“main”中引发CustomException(“错误!”)/>>>异常 }//>>>自定义异常:错误! 有关更多信息:请记住一件事:如果您使用IntelliJ IDE,只需简单地复制/粘贴Java代码即可将其转换为Kotlin 现在来回答你的问题。如果要创建自定义异常,只需扩展异常类,如: class T

如何在Kotlin中抛出自定义异常?我没有从医生那里得到那么多

在文档中,描述了每个异常需要什么,但我如何具体实现它?

如下:

实施 用法
fun main(args:Array){
在线程“main”中引发CustomException(“错误!”)/>>>异常
}//>>>自定义异常:错误!

有关更多信息:

请记住一件事:如果您使用IntelliJ IDE,只需简单地复制/粘贴Java代码即可将其转换为Kotlin

现在来回答你的问题。如果要创建自定义异常,只需扩展异常类,如:

class TestException(message:String): Exception(message)
然后像这样扔:

throw TestException("Hey, I am testing it")

大多数答案都忽略了一个事实,即Exception有4个构造函数。 如果您希望能够在正常异常工作的所有情况下使用它,请执行以下操作:

class CustomException : Exception {
    constructor() : super()
    constructor(message: String) : super(message)
    constructor(message: String, cause: Throwable) : super(message, cause)
    constructor(cause: Throwable) : super(cause)
}

这将覆盖所有4个构造函数,只传递参数。

我想官方指南对此描述得很好。或者我理解错了吗?好吧,现在明白了…您忘记将消息传递给异常构造函数:)我发现您只需要在var:)之前添加override关键字即可@AlexanderRomanov
Exception
类的构造函数为空。但如果基类支持的话,将消息传递给基类是很好的。为什么不使用val消息而不是var呢?参数没有理由是可变的。为什么我们需要覆盖这里的消息?这个答案可能应该排名更高。我的代码中正好有这个用例,而你是一个救星。我不需要将类型
Throwable
更改为
Exception
,这个答案真的很有帮助。@loaded02对不起,你能详细说明一下吗?在什么情况下,如果异常不起作用,您需要一个一次性的?异常扩展了Throwable,因此任何异常都可以是Throwable@DownloadPizza你是对的。不需要改变。
throw TestException("Hey, I am testing it")
class CustomException : Exception {
    constructor() : super()
    constructor(message: String) : super(message)
    constructor(message: String, cause: Throwable) : super(message, cause)
    constructor(cause: Throwable) : super(cause)
}