栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中创建自定义异常?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中创建自定义异常?

要定义受检查的异常,请创建的子类(或子类的层次结构)

java.lang.Exception
。例如:

public class FooException extends Exception {  public FooException() { super(); }  public FooException(String message) { super(message); }  public FooException(String message, Throwable cause) { super(message, cause); }  public FooException(Throwable cause) { super(cause); }}

可能引发或传播此异常的方法必须声明它:

public void calculate(int i) throws FooException, IOException;

…,并且调用此方法的代码必须处理或传播此异常(或同时处理):

try {  int i = 5;  myObject.calculate(5);} catch(FooException ex) {  // Print error and terminate application.  ex.printStackTrace();  System.exit(1);} catch(IOException ex) {  // Rethrow as FooException.  throw new FooException(ex);}

你会在上面的示例中注意到该错误IOException已被捕获并重新抛出为

FooException
。这是用于封装异常的常用技术(通常在实现API时)。

有时在某些情况下,你不想强制每个方法在其throws子句中声明你的异常实现。在这种情况下,你可以创建未经检查的异常。未经检查的异常是任何扩展的异常

java.lang.RuntimeException
(其本身是的子类
java.lang.Exception
):

public class FooRuntimeException extends RuntimeException {  ...}

方法可以抛出或传播FooRuntimeException异常而无需声明。例如

public void calculate(int i) {  if (i < 0) {    throw new FooRuntimeException("i < 0: " + i);  }}

未经检查的异常通常用于表示程序员错误,例如,将无效的参数传递给方法或尝试破坏数组索引范围。

java.lang.Throwable
班是所有的错误和异常,可以在Java中抛出的根源。
java.lang.Exception
java.lang.Error
都是的子类
Throwable
。子类的任何东西都Throwable可能被抛出或捕获。但是,捕获或抛出通常是一种不好的做法,Error因为这是用来表示JVM内部的错误,通常不能由程序员“处理”(例如
OutOfMemoryError
)。同样,你应该避免
catch Throwable
,这可能导致你Error除了
Exceptions
之外还捕获s。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420360.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号