查看“Java异常的抛出”的源代码
←
Java异常的抛出
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==异常处理原则== *具体明确 *提早抛出 *延迟捕获 具体明确指的是在抛出异常时需要针对具体问题来抛出异常,抛出的异常要足够具体详细 提早抛出的基本目的还是为了防止问题扩散,这样出现异常的话排查起来会比较耗时,比较典型的一种情况是 NPE(NullPointerException),当某个参数对象为null时,如果不提早判断并抛出异常的话,这个null可能会藏的比较深,等到出现NPE时就需要往回追溯代码了。这样就给排查问题增加了难度。所以我们的处理原则是出现问题就及早抛出异常。 延迟捕获说的是对异常的捕获和处理需要根据当前代码的能力来做,如果当前方法内无法对异常做处理,即使出现了检查异常也应该考虑将异常抛出给调用者做处理 ==异常的抛出== ===throws 语句 === 如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。 也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的。 下面方法的声明抛出一个 RemoteException 异常: <nowiki>import java.io.*; public class className { public void deposit(double amount) throws RemoteException { // Method implementation throw new RemoteException(); } //Remainder of class definition } </nowiki> 一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。 例如,下面的方法声明抛出 RemoteException 和 InsufficientFundsException: <nowiki> import java.io.*; public class className { public void withdraw(double amount) throws RemoteException, InsufficientFundsException { // Method implementation } //Remainder of class definition } </nowiki> try catch是直接处理,处理完成之后程序继续往下执行,throw则是将异常抛给它的上一级处理,程序便不往下执行了。 ===试一试:捕获算术异常===: <nowiki> package exception; public class TestException { public static void divide(int i,int j) throws Exception { if(j==0){ throw new ArithmeticException();} int temp = i/j; //此处会产生异常 System.out.println("计算结果:"+temp); } public static void main(String[] args) { try{ divide(5,0); }catch(Exception e){//处理抛出的异常。 System.out.println("出现异常:"+e); //打印异常信息 //e.printStackTrace(); //打印完整的异常信息 } System.out.println("计算结束"); } } </nowiki> ===练一练:捕获数组异常===
返回至
Java异常的抛出
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息