java 运行时异常和非运行时异常

  运行时异常运行时异常例子:

  我写一个类如下: 
  import java.io.*; 
  public abstract class MyLayer 
  { 
  ... 
  void someFun() 
  { 
  if(condtion) 
  { 
  throw new IllegalArgumentException();在这里,我如果抛出 IOException 就出错了 
  } 
  } 
  ... 
  
  } 
  
  如上,我如果抛出 IllegalArgumentException 异常,是 OK 的,可是如果抛出 IOException ,就报错说 “unhandled exception type IOException”,这时,需要在类名后加上 
  public abstract class throws IOException 才能改正这个错误 
  
  我疑惑的是,为什么 IllegalArgumentException 可以直接抛出,而不需要在类名后声明抛出的异常呢 
  
  如果一个class 写成这样 
  public class ClassA 
  后面不声明异常,是不是表示该类不抛异常,如果在改类的方法中想抛出异常,编译就会报错 
  可是如果是这样的话,我开始这段代码又怎么会对呢 
  不解 
 

------解决方法--------------------------------------------------------
IllegalArgumentException是运行期异常,是RunntimeException的子类,没有强制要求catch,但是IOException是受控异常,必须在程序里边显式的catch或者throw 
------解决方法--------------------------------------------------------
IllegalArgumentException 是运行时异常,不需要在使用的地方加声明;IOException是编译时异常,需要在使用的地方加上声明。但你的做法有误,你这样: 
  void someFun() throws IOException 
  { 
  if(condtion) 
  { 
  throw new IOException(); 
  } 
  } 
  
  就OK了 
------解决方法--------------------------------------------------------
IllegalArgumentException 是一个运行时异常,继承自RuntimeException 
  RuntimeException这种异常在程序正常运行时时不会发生的,因此这类异常不需要在程序中捕获 
  NullPointerException也属于这种异常 
  IOException 是非运行时异常,这类异常需要在程序中捕获 
  如果不捕获则需要将异常抛出,交给程序的上一层处理 
  我通常是这样写在方法名的后面,表示这个方法会抛出这个异常 
  void someFun() throws IOException 
  { 
  if(condtion) 
  { 
  throw new IOException(); 
  } 
  }   


http://www.myexception.cn/java%20exception/485.html
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值