程序异常

5 篇文章 0 订阅

异常

1、异常

1、异常的定义:在程序运行中出现的错误。

2、异常分为三类:

编译错误:不能运行,在编译阶段就报错。

运行错误:正常编译,但是运行错误。

逻辑错误:正常编译,正常运行,结果错误。

程序遇到错误默认处理手段:程序之间终止本行代码。

2、处理异常手段:try-catch-finally处理异常,

try:监控代码,监控可能发生错误的代码。

catch:捕获异常,语法catch(类名,对象名)类名是异常的类名。catch可以出现一次性出现多个,要求:子类必须在父类的前面。结果:只会执行一个,第一次匹配的执行。

finally:一定会处理,除非遇到system.exit(1)。

public class TestLog1 {
	private static Logger logger = Logger.getLogger(TestLog1.class.getName());
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		try {
			System.out.print("请输入被除数:");
			int num1 = in.nextInt();
			logger.debug("输入被除数:"+num1);
			System.out.print("请输入除数:");
			int num2 = in.nextInt();
			logger.debug("输入除数:"+num2);
			System.out.println(String.format("%d / %d = %d",num1,num2,num1/num2));
			logger.debug("输出运算结果:"+String.format("%d / %d = %d", num1,num2,num1/num2));
		} catch (InputMismatchException e) {
			logger.error("被除数和除数必须是整数",e);
		}catch(ArithmeticException e) {
			logger.error(e.getMessage());
		}catch(Exception e) {
			logger.error(e.getMessage());
		}finally {
			System.out.println("欢迎使用本程序!");
		}
	}
}

try是必选,catch和finally是二选一,程序终止:close()结束。

throw-throws:抛出异常。

throw:抛出异常(内部动作,有异常自己解决不了)语法:在方法里面throw异常对象名

throws:声明异常(外部动作,请求外援动作)语法:方法名小括号里面调用的方法一旦声明了异常,那么外援一丁丁要处理异常,没有处理,则编译报错。请求外援:1、有错误自己解决不了,2、请求外援的动作

public class Test {
	private static Logger logger = Logger.getLogger(Test10.class.getName());
	public static void main(String[] args) {
		try {
			Scanner in = new Scanner(System.in);
			System.out.print("请输入被除数:");
			int num1 = in.nextInt();
			logger.debug("输入被除数:"+num1);
			System.out.print("请输入除数:");
			int num2 = in.nextInt();
			logger.debug("输入除数:"+num2);
			System.out.println(String.format("%d / %d = %d",num1,num2,num1/num2));
			logger.debug("输出运算结果:"+String.format("%d / %d = %d", num1,num2,num1/num2));
		} catch (InputMismatchException e) {
			logger.error("被除数和除数必须是整数",e);
		}catch(ArithmeticException e) {
			logger.error(e.getMessage());
		}catch(Exception e) {
			logger.error(e.getMessage());
		}finally {
			System.out.println("欢迎使用本程序!");
		}
	}
}

3、异常结构

​ Throwable

​ Error Exception

1、异常类型
异常说明
Exception异常层次结构的根类
ArithmeticException算术错误情形,如以零除数
ArrayIndexOutOfBoundsException数组下标越界
NullPointerException尝试访问null对象成员
ClassNoFoundException不能加载所需的类
InputMismatchException欲得到数据类型与实际输入的类型不匹配
IllegalArgumentException方法接收到非法参数
ClassCastException对选哪个强制类型转换出错
NumberFormatException数字格式转换异常,如把“abc”转换成数字
4、日志

日志作用:把异常信息永久保存到文件

日志框架:log4j、slf4j、logback

学习步骤:1、导入jar包。2、定义配置文件:log4j.properties(固定文件名+固定位置)。3、使用logger。4、配置文件:#设置输出级别目的地,#等级本身及其以上,#目的地可以有多个

log4j.appnder.目的地名称 = org.apche.log4j.目的地类型

log4j.uppnder.filrfatal.layou.conversion Pattern = [%9P] - %m%n

1、日志等级

debug(Object i); debug(Object i,Throwable t); 调试

info(Object i); info(Object i,Throwable t); 信息

warn(Object i); warn(Object i,Throwable t); 警告

error 错误

fatal(Object i); fatal(Object i,Throwable t); 严重错误

layou:布局

SimpleLayout:简单格式

HTMLLayou:HTML格式

PattmLayou:自定义格式

P:输出的等级

M:消息,输出内容

N:换行

###设置Logger输出级别和输出目的地
log4j.rootLogger=Info, stdout,logfile

###把日志信息输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender//输出地址
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout//输出格式
log4j.appender.stdout.layout.ConversionPattern=%d %l %m %n

###把日志信息输出到文件
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=jbit.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}%l %F %p %m%n
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值