Java中的异常处理

  错误与异常类Throwable下的两大分支子类,Error与Exception。


  Error用来描述程序中的错误,Exception主要用来描述程序中的异常,EThrowable类即该类的子类可以被throws关键词操作,其类的对象可以被throw关键词操作。

 

  Java中所有异常均可被封装成一个Exception类的子类,用来描述该异常。

 

  Java中有大量内置异常类,如:

 

  •  ArithmeticException                                    算术异常
  •  NullPointException                                      空指针异常
  •  ArrayIndexOutOfBoundsExeption             下标越界异常
  •  InterruptedException                                   线程中断异常
  •  IllegalMonitorStateException                     非法监视器异常
  •  SQLException                                               数据库异常
  •  SocketException                                          端口异常

  Java中的异常体系非常强大,几乎包括了所有可能发生的异常,即使没有,你也可以从Exception即子类extends创建自定义异常 。

 

  当一个内置异常产生时JVM自动产生一个异常对象,并抛出。

 

  也可以手动抛出各类内置异常类对象如throw new NullPointException。或是抛出一个自定义异常类对象,自定义异常类必须继承自Exception使其具有被throw和throws关键词操作的可抛性。

 


  函数内产生一个异常对象后有两种处理方式。

 

  在函数体后添加throws 异常类名,将异常抛出给上一级调用者处理。

 

  在函数体内使用try 捕捉异常,并使用catch处理异常。

 


  RuntimeException为运行时异常,异常只会发生在程序运行时。

 

  RuntimeException异常类直接继承自Exception。该异常类及其子类产生的异常不强制要求必须抛出,即发生此类异常可以不做任何处理,异常会抛给jvm程序结束。

 

  RuntimeException用于封装一些使程序无法继续运行的异常对象,当然你也可以catch它,但你要保证你能处理。
   

 

异常处理机制格式:

		try {
			//try域内放置可能产生异常的代码
		} catch (Exception e) {//异常捕捉到后将异常对象传递过来如此处的e
			//然后在catch的域内做出相应的异常处理后,并结束当前函数的运行返回到上一级调用者处
		} finally {
			//finally域内的代码无论是否发生异常都会被执行的,
			//主要作用当异常产生时函数会中断执行返回上一级调用处前需要做的善后处理。
		}

 

   一个try可以对应多外catch,捕捉时自上向下寻找对应的catch异常条件,所以异常体系中基类应该放在最下面。也可以不写catch,throws到上一级调用者,但是没有catch的时候,必须有finally。

 

  派生类中的函数如果覆盖了基类中的函数,那么派生类的覆盖函数只能抛出基类被覆盖函数抛出的异常,或是其子类异常。如果基类函数没有抛出异常,那么派生类的覆盖函数也不可以抛任何异常,必须在内部try捕捉,然后catch处理掉。

 

  finally在return之后仍然有效,但无法改变返回值,但是如果在finally域内也有一个returm 那么该返回值将顶替之前的返回值。

 

  Throwable类中的方法printStackTrace方法默认将异常信息打印至标准输出流(控制台上),可以对其传递一个PrintWriter或 PrintStream 对象,将异常信息打印到对象关联的文件或其它输出设备中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值