java异常概述,分类,认识----java小知识

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、什么是异常?

异常是程序在“编译”或者“执行”的过程中可能出现的问题,注意:语法错误不算在异常体系中。
比如:数组索引越界、空指针异常、日期格式化异常,等等。

一、学习异常的意义

(1)异常一旦出现,如果没有提前处理,程序就会退出JVM虚拟机而终止。
(2)研究异常并且避免异常,然后提前处理异常,体现的是程序的安全,健壮性。

二、异常分类

Exception: java.lang包下,称为异常类,它表示程序本身可以处理的问题。
RuntimeException及其子类:运行时异常,编译阶段不会报错。(空指针异常,数组索引越界异常)
除RuntimeException之外所有的异常︰编译时异常,编译期必须处理的,否则程序不能通过编译。(日期格式化异常)。
在这里插入图片描述(黑马程序员网课截图)

1.常见运行时异常

在这里插入图片描述
代码如下(数组越界异常):

public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int [] a= {1,2,3};   //数组越界
		System.out.println(a[3]);
	}

}

结果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
	at demo3.test1.main(test1.java:8)

代码如下(空指针异常):
public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String str=null;
		System.out.println(str.length());
		}

}

结果:

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
	at demo3.test1.main(test1.java:8)

代码如下(数学操作异常):

public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		int a=2/0;
		System.out.println(a);
		}

}

结果:

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at demo3.test1.main(test1.java:7)

代码如下(类型转换异常):

public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Object o=23;
		String str=(String)o;
		System.out.println(str);
	}
}

结果:

Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
	at demo3.test1.main(test1.java:8)

代码如下(数字转换异常):

public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String str="23ac";
		Integer a=Integer.valueOf(str);
		System.out.println(a);
	}
}

结果

Exception in thread "main" java.lang.NumberFormatException: For input string: "23ac"
	at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)
	at java.base/java.lang.Integer.parseInt(Integer.java:660)
	at java.base/java.lang.Integer.valueOf(Integer.java:991)
	at demo3.test1.main(test1.java:8)

2.常见编译时异常

在这里插入图片描述

代码如下(示例):

import java.sql.Date;
import java.text.SimpleDateFormat;

public class test1 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		String date="1912-10-11 23:17:00";
		SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date da=sim.parse(date);
	}
}

更改后:

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class test1{

	public static void main(String[] args) throws ParseException {
		// TODO 自动生成的方法存根
		String date="1912-10-11 23:17:00";
		SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date da=sim.parse(date);
		System.out.println(da);
	}
}

结果:

Fri Oct 11 23:17:00 CST 1912

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值