主页 > 互联网  > 

Java第八章异常(1)

Java第八章异常(1)

目录

异常概述

认识异常

异常处理机制

解决方法

异常体系结构

常见的异常

异常--运行时异常

算术异常

数组越界异常

类型转换异常

数字格式化异常

空指针异常

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.下标越界 ArrayIndexOutOfBoundsException int[] a1 = {1,2,3,4,5}; a1[5]=6; 类型转换异常 //类型转换异常 ClassCastException Object 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; }else return num+sum(num-1); } } 问题实例

1.

//看程序输出结果: 1 , 2 public 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 D class 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, 1134234 class 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);// } }

标签:

Java第八章异常(1)由讯客互联互联网栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java第八章异常(1)