栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 异常及异常的处理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 异常及异常的处理

|-----NumberFormatException

|-----InputMismatchException

|-----ArithmeticException

2.从程序执行过程,看编译时异常和运行时异常

======================

编译时异常:执行javac.exe命名时,可能出现的异常

运行时异常:执行java.exe命名时,出现的异常

3.常见的异常类型,请举例说明:

================

//以下是运行时异常*********

//ArithmeticException算数异常

@Test

public void test6(){

int a = 10;

int b = 0;

System.out.println(a / b);

}

//InputMismatchException输入异常

@Test

public void test5(){

Scanner scanner = new Scanner(System.in);

int score = scanner.nextInt();

System.out.println(score);

scanner.close();

}

//NumberFormatException数字格式异常

@Test

public void test4(){

String str = “123”;

str = “abc”;

int num = Integer.parseInt(str);

}

//ClassCastException类型转换异常

@Test

public void test3(){

Object obj = new Date();//向上转型为父类

String str = (String)obj;

}

//IndexOutOfBoundsException数组角标越界

@Test

public void test2(){

//ArrayIndexOutOfBoundsException

//        int[] arr = new int[10];

//        System.out.println(arr[10]);

//StringIndexOutOfBoundsException

String str = “abc”;

System.out.println(str.charAt(3));

}

//NullPointerException空指针异常

@Test

public void test1(){

//        int[] arr = null;

//        System.out.println(arr[3]);

String str = “abc”;

str = null;

System.out.println(str.charAt(0));

}

//以下是编译时异常*********

@Test

public void test7(){

//        File file = new File(“hello.txt”);

//        FileInputStream fis = new FileInputStream(file);

//

//        int data = fis.read();

//        while(data != -1){

//            System.out.print((char)data);

//            data = fis.read();

//        }

//

//        fis.close();

}

4.java异常处理的抓抛模型

===============

过程一:“抛”:程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。并将此对象抛出。一旦抛出对象以后,其后的代码就不再执行。

关于异常对象的产生:① 系统自动生成的异常对象

② 手动的生成一个异常对象,并抛出(throw)(手动抛出异常对象的一种方法)

过程二:“抓”:可以理解为异常的处理方式:① try-catch-finally  ② throws(处理异常的一种方式)

5.异常处理方式一:try-catch-finally

===========================

try{

//可能出现异常的代码

}catch(异常类型1 变量名1){

//处理异常的方式1

}catch(异常类型2 变量名2){

//处理异常的方式2

}catch(异常类型3 变量名3){

//处理异常的方式3

}

finally{

//一定会执行的代码

}

6.try-catch-finally说明

================================

finally是可选的。

使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,去catch中进行匹配

一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦处理完成,就跳出当前的try-catch结构(在没写finally的情况。继续执行其后的代码

catch中的异常类型如果没子父类关系,则谁声明在上,谁声明在下无所谓。

catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面。否则,报错

常用的异常对象处理的方式: ① String  getMessage()    ② printStackTrace()

在try结构中声明的变量,再出了try结构以后,就不能再被调用

try-catch-finally结构可以嵌套

7.总结:如何看待代码中的编译时异常和运行时异常

========================

使用try-catch-finally处理编译时异常,是得程序在编译时就不再报错,但是运行时仍可能报错。相当于我们使用try-catch-finally将一个编译时可能出现的异常,延迟到运行时出现。

开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally了。针对于编译时异常,我们说一定要考虑异常的处理。

8.final、finally、finalize三者的区别

=============================

类似:

throw 和 throws

Collection 和 Collections

String 、StringBuffer、StringBuilder

ArrayList 、 linkedList

HashMap 、linkedHashMap

重写、重载

结构不相似的:

抽象类、接口

== 、 equals()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号