Java异常

1、异常思维导图:

2、Exception 

    Exception则是运行时的错误,它可以被捕获并处理。某些异常是应用程序逻辑处理的一部分,应该捕获并处理。
 

NumberFormatException:数值类型的格式错误
FileNotFoundException:未找到文件
SocketException :读取网络失败


     还有一些异常是程序逻辑编写不对造成的, 应该修复程序本身。例如:

NullPointerException: 对某个nu1l 的对象调用方法或字段
IndexOutOfBoundsException  :数组索引越界

    Exception又分为两大类:

RuntimeException以及它的子类;
非RuntimeException(包括( IOException 、ReflectiveOperationException等)

    异常的捕获:

捕获异常使用try...catch 语句,把可能发生异常的代码放到try {...} 中,然后使用catch 捕获对应的Exception及好类

代码:

package com.ret.demo4;

public class Demo_oop_01 {
	public static void main(String[] args) {
		// 异常
		int[] ns = { 11, 12, 13, 14, 15 };
		System.out.println(ns[0]);
		System.out.println(ns[ns.length - 1]);

		// 由于下标超出范围,产生数组下标越界ArrayIndexOutOfBoundsException
		// System.out.println(ns[99]);

		String s = "但使龙城飞将在";
		System.out.println(s.charAt(0));
		System.out.println(s.charAt(s.length() - 1));
        
		// 由于下标超出范围,产生字符串下标越界StringIndexOutOfBoundsException
		System.out.println(s.charAt(99));
	}
}

package com.ret.demo4;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo_oop_06 {
	public static void main(String[] args) {
		// try : 包围可能产生异常的代码块
		// 如果产生异常,系统会根据异常产生的原因,创建一个异常对象
		// catch : 捕获异常,处理异常
		try (Scanner in = new Scanner(System.in)) {
			// 获取输入是,可能产生InputMismatchException

			// 输入非法的内容:a
			// JVM创建一个InputMismatchExecption类型的异常对象,并抛出
			// 程序会从try块退出

			int n1 = in.nextInt(); // 输入a
			int n2 = in.nextInt();

			// 计算除法时,可能产生ArithmeticException
			System.out.printf("%d ÷ %d = %d", n1, n2, n1 / n2);
		} catch (NullPointerException ex) {
			System.out.println("哎呦,空指针了!");
		} catch (InputMismatchException ex) {
			System.out.println("哎呦,输入错误了!");
		}
	}
}

3、Error

Error表示严重的错误,程序对此一般无能为力,例如:

OutOfMemoryError :内存耗尽

NoClassDefFoundError :无法加载某个Class

StackOverflowError :虚拟机栈溢出

4、小结 

Java使用异常来表示错误,并通过try ... catch 捕获异常;
Java的异常是class(类) ,并且从Throwable 继承;
Error是无需捕获的严重错误,Exception 是应该捕获的可处理的错误;
RuntimeException无需强制捕获,非RuntimeException (Checked Exception)需强制捕获,或者用throws 声明;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值