黑马程序员——Java基础——异常
来源:互联网 发布:十大即时通讯软件 编辑:程序博客网 时间:2024/06/05 15:27
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
异常:就是程度在运行时出现不正常的情况。
它分为两种情况:一种是严重的不可处理的,Error类;另一种是非严重可以处理的,Exception类。它们两个有共性,因为它们有着一个父类,Throwable类,这个是异常中最高的超类。
一般 Exception 异常的处理方式有:try{ } catch ( ) { } finally { }
如果定义的函数存在有异常的可能性,要在函数上抛出一个异常:throws Exception ,这个是声明函数有可能会出现问题,告诉调用者要对其进行处理,可以用 try…catch…. , 也可以通过 throws 抛给其他调用的人,最终如果都没人处理(譬如在主函数),就会抛给JVM(虚拟机),运用默认的处理方式去处理。
finally:存放一定会被执行的代码,通常用于关闭资源。
(譬如关闭数据库的时候会用到)
示例如下:
public class ExceptionTest { public static void xiangChu(int a,int b) throws Exception{ int c=a/b; System.out.println(c); } public static void main(String[] args){ try{ xiangChu(8,0); }catch(Exception e){ System.out.println(e.toString()+" 除数不能为0"); } }}
自定义异常:class xxException extends Exception{ }
它实际上就是一个类继承Exception这个类的子类,通过建立它的构造函数来定义自己的异常提示内容,可在构造函数中写 super( message ) 调用父类的构造方法来完成。
自定义异常的例子如下:
class FuShuException extends Exception{ FuShuException(){ super("除数不能为负数!"); }}public class ExceptionTest2 { public static void xiangChu(int a,int b) throws FuShuException{ if(b<0) throw new FuShuException(); int c=a/b; System.out.println(c); } public static void main(String[] args){ try{ xiangChu(9,-2); }catch(Exception e){ System.out.println(e.toString()); } }}
throws 和 throw 的区别:
throws是在函数上声明异常类;
throw是在函数内抛出异常对象。
有一个异常类比较特殊,函数上如果声明了它,调用者调用时不对它进行捕捉处理,编译会通过;或者在函数内抛出它的对象,函数上不声明,它也会通过;它就是 RuntimeException(运行时异常)。
第 一种情况的代码,编译会通过:
class YunSuan{ public int div(int a,int b) throws RuntimeException{ return a/b; }}public class RuntimeExceptionTest { public static void main(String[] args){ YunSuan a=new YunSuan(); int c=a.div(6, 0); System.out.println(c); }}
第二种情况的代码,编译也会通过:
class YunSuan2{ public int div(int a,int b){ if(b<0) throw new RuntimeException("除数不能为负数!"); return a/b; }}public class RuntimeExceptionTest2 { public static void main(String[] args){ YunSuan2 a=new YunSuan2(); int c=a.div(6, 0); System.out.println(c); }}所以异常有分为两类:1、编译时被检测的类(非运行时);2、编译时不被检测的类,就是上面的RuntimeException类,以及它的子类。
注意:
如果异常在函数内已经解决了,那么在函数上就不用声明了。
反则,如果在函数内还抛出了一个异常对象,那么就要在函数上声明异常类了。
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础--- 异常
- 黑马程序员——Java基础->异常
- 黑马程序员——Java基础-异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础--异常
- 黑马程序员——Java基础---异常
- 黑马程序员——Java基础-异常
- 黑马程序员——Java基础--------异常
- 黑马程序员——java基础---异常
- 黑马程序员 Java基础——异常
- 黑马程序员——Java 基础:异常
- 黑马程序员——JAVA基础----异常
- 黑马程序员—JAVA基础之异常
- 黑马程序员——java基础---Java语言中的异常
- 黑马程序员—java异常
- 黑马程序员——java基础——异常
- HDU 献给杭电五十周年校庆的礼物
- Java间隔计时触发器
- 黑马程序员-关于生产者消费者和火车票出售的线程问题
- Linux 目录流管理
- H.264/ACC音视频编码流的RTP/RTSP传输实现(3)
- 黑马程序员——Java基础——异常
- MyEclipse 配置SSH框架
- SVG基础——如何使用可缩放矢量图形(SVG)
- HDU 不容易系列之一
- 第十四周项目 小玩文件
- Android学习日记(1)
- 【矩阵乘】【NOI 2012】【cogs963】随机数生成器
- 中缀式转化为前缀式,中缀式转化为后缀式
- tp frameset刷新另外一个frameset