关于Java异常及其处理

注:本文中绿色文字代表注释
我们在编写程序的时候常常会遇到程序运行错误,这些所谓的“错误”就是我们口中的异常!

那么今天我们便来谈谈这些异常吧!
异常就是指在程序运行过程中遇到的不正常情况
我们口中的异常并不是一件事或者是一个东西,它是指所有不正常情况的总称,所以说,我们给异常也进行了分类
主要分类我们也不用细讲,我们今天主要来讲一下我们会经常遇到的异常类型
我们从接触Java以来遇到过的异常大致如下:
ArithmeticException:算数错误情形 ,如0做被除数 (因算数规则引发的异常,比如说0作为除数,数学中0做除数无意义) ArrayIndexOutOfBoundsException:数组下标越界  (如给定数组长度为3,却手动存入4个单位)
NullPointerException:尝试访问Null对象成员 (空指针异常,就是指尝试使用未赋值的对象成员)
InputMismatchException:欲得到的数据类型与输入属性不匹配  (举个栗子,需要输入数字的地方某个智障输入了字符串……凉凉)
ClassCastException:对象强制类型转换出错 (对象类型不兼容引起异常,比如说一个学生类和老师类有一个共同父类People 学生类通过其父类创建对象,再将其转换为老师类 )
NumberFormatException :数字格式转换异常 (比如说将"Student"强制转换为int类型)


这么多异常,大家都知道我们的程序遇到异常的时候会停止运行并且报错,那我们该怎么解决这些潜在的问题呢?或者说怎么避开这些异常呢?

这就是我们接下来要讲的内容,大家都知道Java给我们提供了异常处理的方式,我们如果要做到异常处理通常就要用到以下五个关键字:try、catch、finally、throw、throws

try:此段代码块中写入可能发生异常的代码
catch:此段代码块用来捕获异常,也就是说try代码块中出现异常将执行此段代码块

finally:在此段代码块中的代码无论如何都会执行,除非项目停止运行 (就是说你的项目有没有发生特殊情况,只要虚拟机还在运行,这段代码都会运行)
throw:手动抛出异常 (就是说由调试着创建赋值规则,如果违反规则就抛出异常,比如说人的年龄规定在1~100,如果赋值超出这个范围就会抛出异常)
throws:声明异常  (在方法参数后面声明这个方法内可能报的异常,然后抛出异常)

在我们调试程序的时候总是将try-catch-finally配合使用,用法如下:

package com.test;

import java.util.Scanner;

public class test {
	public static void main(String[] args) {
		Scanner input=new Scanner(System.in);
		try {
			System.out.print("请输入您的年龄:");
			int age=input.nextInt();
		} catch (Exception e) {
			System.out.println("报错将执行这里");
			System.out.println(e);
		}finally{
			System.out.println("这里总会被执行");
		}
	}
}
还有一种多重catch块,就像else if一样,一级一级判断,如果是相应的异常类型就会执行本段代码块,用法如下(catch块的排序必须是从子类到父类,因为一旦执行了其中一个catch快就会忽略其他的catch块,所以我们一般将Exception块放到最后一个):
package com.test;import java.util.InputMismatchException;import java.util.Scanner;

public class test {public static void main(String[] args) {Scanner input=new Scanner(System.in);
try {System.out.print("请输入您的年龄:");int age=input.nextInt();} catch (InputMismatchException e) {System.out.println("因为输入类型报错将执行这里");System.out.println(e);}catch(Exception e){System.out.println("因为其他原因报错将执行这里");}finally{System.out.println("这里总会被执行");}}}
如果我们要对一个方法可能产生异常进行检测就需要用到throws:
public void show() throws Exception{
		//这里写可能报错的代码块
	}

所谓手动抛出异常,也就是创建一个异常就要用到throw:

public void show(int age) throws Exception{
		if (age<=0&&age>100) {
			//年龄非法赋值,在这里创建一个异常
			throw new Exception("年龄赋值不合法");
		}
	}

Java给我们提供的常用异常处理方法基本操作就是这些,将这些方法与我们刚刚讲到的几种特定的异常类型结合使用会让我们的项目更加完美
最后,希望本文对大家有帮助(手动滑稽)

                                                                                                                --叶子原创,复制粘贴的等着法院传票吧

你可能感兴趣的:(Java)