可能重复:
我如何自己编写例外?
我想在Java中创建一个自定义异常,我该怎么做?
...
try{
...
String word=reader.readLine();
if(word.contains(" "))
/*create custom exception*/
}
catch(){
Run Code Online (Sandbox Code Playgroud)
当我创建自定义异常时throw new...
,我得到错误unreported exception...must be caught or declared to be thrown
Rio*_*ams 229
您应该能够创建扩展Exception
该类的自定义异常类,例如:
class WordContainsException extends Exception
{
// Parameterless Constructor
public WordContainsException() {}
// Constructor that accepts a message
public WordContainsException(String message)
{
super(message);
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
try
{
if(word.contains(" "))
{
throw new WordContainsException();
}
}
catch(WordContainsException ex)
{
// Process message however you would like
}
Run Code Online (Sandbox Code Playgroud)
Laf*_*ica 114
您需要创建一个扩展自的类Exception
.它应该如下所示:
public class MyOwnException extends Exception {
public MyOwnException () {
}
public MyOwnException (String message) {
super (message);
}
public MyOwnException (Throwable cause) {
super (cause);
}
public MyOwnException (String message, Throwable cause) {
super (message, cause);
}
}
Run Code Online (Sandbox Code Playgroud)
您的问题未指定是应检查还是取消选中此新异常.
正如您在这里看到的,这两种类型是不同的:
已检查的异常旨在标记应由调用方法的开发人员处理的有问题的情况.应该可以从这种例外中恢复.一个很好的例子是FileNotFoundException.这些异常是Exception的子类.
未经检查的异常旨在表示代码中的错误,这是您可能无法从中恢复的意外情况.甲的NullPointerException是一个典型的例子.这些异常是RuntimeException的子类
检查异常必须由调用方法处理,通过捕获它并相应地执行,或者将其抛给调用方法.未经检查的异常并不意味着被捕获,即使有可能这样做.
Fei*_*ngo 16
关于创建自定义异常类的好答案.如果您打算重用有问题的例外,那么我会按照他们的答案/建议.但是,如果只需要使用消息抛出快速异常,则可以在现场使用基本异常类
String word=reader.readLine();
if(word.contains(" "))
/*create custom exeception*/
throw new Exception("My one time exception with some message!");
}
Run Code Online (Sandbox Code Playgroud)
emo*_*ory 12
既然您可以创建并抛出异常,那么就可以轻松实现
if ( word.contains(" ") )
{
throw new RuntimeException ( "Word contains one or more spaces" ) ;
}
Run Code Online (Sandbox Code Playgroud)
如果您想要更正式,可以创建一个Exception类
class SpaceyWordException extends RuntimeException
{
}
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,如果您使用RuntimeException
,您的新内容Exception
将被取消选中.
Joo*_*gen 10
作为一个细心的程序员往往会抛出一个异常,一个特殊的发生,值得一提的一些通用例外像IllegalArgumentException
和IllegalStateException
和UnsupportedOperationException
.IllegalArgumentException
是我的最爱:
throw new IllegalArgumentException("Word contains blank: " + word);
Run Code Online (Sandbox Code Playgroud)
异常是一个类,就像任何其他类一样,除了它从中扩展Exception
.所以,如果你创建自己的类
public class MyCustomException extends Exception
Run Code Online (Sandbox Code Playgroud)
你可以抛出这样的实例
throw new MyCustomException( ... );
//using whatever constructor params you decide to use
Run Code Online (Sandbox Code Playgroud)
而这可能是一个有趣的阅读
归档时间: |
|
查看次数: |
342403 次 |
最近记录: |