枣庄网站建设枣庄/一键生成app制作器
目录
异常概述
认识异常
异常处理机制
解决方法
异常体系结构
常见的异常
异常--运行时异常
算术异常
数组越界异常
类型转换异常
数字格式化异常
空指针异常
Error
问题实例
异常概述
认识异常
- 在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善 尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络出现问题等等。
-
异常:在程序运行过程中出现的非正常情况
-
广义异常:指的是所有不正常的情况
狭义异常:指可以处理的异常 -
注:代码错误,编译不通过,不属于异常(例如少写了结尾;),代码错了不会产生字节码 文件,根本不能运行
异常案例
异常处理机制
Java中把可能出现的每种异常情况,都封装成了一个类,当出现某种异常时,抛出此类型异常的对象
l不管,如果没有捕获这个异常对象,出现异常,直接中止程序
2.异常处理,接收抛出的对象,提供处理程序,让后面的程序可以继续运行。
解决方法
- 一是遇到错误就终止程序的运行。
- 另一种方法是程序员在编写程序时,就充分考虑到各种可能发生的异常和错误, 极力预防和避免。并且要编写相应的代码进行异常的检测、以及异常的处理方 式,保证代码的健壮性
异常体系结构
Throwable
java.lang.Throwable类是Java程序执行过程中发生的异常事件对应的类的根父类。
Throwable中的常用方法:
- public void printStackTrace():打印异常的详细信息。 包含了异常的类型、异常的原因、异常出现的位置、在开发和调试阶段都得使用printStackTrace。
- public String getMessage():获取发生异常的原因
Throwable可分为两类:Error和Exception。
分别对应着java.lang.Errorjava.lang.Exception两个类。
Error:Java虚拟机无法解决的严重问题。如:JVM系统内部错误、内存资源耗 尽等严重情况。一般不编写针对性的代码进行处理。
例如:StackOverflowError(栈内存溢出)。
Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,需要使用针对 性的代码进行处理,使程序继续运行
常见的异常
异常--运行时异常
算术异常
// 1.算数异常 ArithmeticException
// int a = 10;
// int b = 0;
// System.out.println(a/b);
数组越界异常
//2.下标越界 ArrayIndexOutOfBoundsExceptionint[] a1 = {1,2,3,4,5};a1[5]=6;
类型转换异常
//类型转换异常 ClassCastExceptionObject object ="abc";Integer a = (Integer) object;
数字格式化异常
数字格式化异常
// Exception in thread "main" java.lang.NumberFormatException: For input string: "a1"
// at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
// at java.lang.Integer.parseInt(Integer.java:580)
// at java.lang.Integer.parseInt(Integer.java:615)
// at com.wyk.javaexception.Dom.main(Dom.java:25)String s ="a1" ;Integer.parseInt(s);
空指针异常
/*使用了一个为null的对象 空指针异常NullPointerException*/String s = null;s.length();
Error(错误)
栈溢出: StackOverflowErro
package com.wyk.javaexception;public class Dom2 {public static void main(String[] args) {//Java.lang.StackOverError 栈内存空间异常递归调用的方法过多,导致栈空间不够用,是程序无法解决处理的sum(500000);}public static int sum (int num){if (num == 1) {return 1;}elsereturn num+sum(num-1);}
}
问题实例
1.
//看程序输出结果: 1 , 2public static void main(String[] args) {try {int i=100/0;System.out.println(i);}catch(Exception e){System.out.println(1);throw new RuntimeException();}finally{System.out.println(2);}System.out.println(3);}
2.
//写出程序结果: B C Dclass Demo{public static void main(String[] args){try{showExce(); System.out.println("A");}catch(Exception e){System.out.println("B");}finally{System.out.println("C");}System.out.println("D");}public static void showExce()throws Exception{throw new Exception();}}
3.
//写出程序结果:1134, 1134234class Test{ public static String output="1";public static void foo(int i){ try{ if(1==i)throw new Exception(); output+="1"; }catch(Exception e){ output+="2"; } finally{ output+="3"; } output+="4"; }public static void main(String args[]){ foo(0); System.out.println(output);// foo(1); System.out.println(output);// }}