java中的异常 try catch
1.学习异常的原因?
如果没有异常处理机制,那么程序的一点小问题,都会导致【程序终止运行】。实际开发中显然是不可能的,所以异常对于程序来说是非常重要的。
2.处理异常的方式:
A.if结构:
1。代码量大,代码结构不明显
2。程序员的大部分精力不是用在流程上,而是“堵漏洞”。
3。遗留一个漏洞,程序依然终止。
B。异常处理机制:
try catch finally throw throws
异常的捕获 抛出异常 声明异常。
3.异常处理的结构:
第一种: try---catch:
程序正常运行:只走try代码块里的代码;catch块不执行。
程序发生异常:走try报错前的代码--会产生一个异常对象;
异常对象与catch块捕获的异常类型进行对比;
如果匹配:执行对应catch块代码;
如果不匹配:程序依然终止。
第二种:try--catch---catch:
程序正常运行:只走try代码块里的代码;catch块不执行。
程序发生异常:走try报错前的代码--会产生一个异常对象;
异常对象与catch块捕获的异常类型进行对比;
如果匹配:执行对应catch块代码;【只有一个匹配的catch块代码】
如果不匹配:程序依然终止。
注意:1.父类的异常类型【必须】在最后一个catch里。
2.子类的异常类型顺序无关。
3.最后一个catch块都是存放父类的异常类型。
第三种:try--catch--catch--finally
程序正常运行:只走try代码块里的代码;catch块不执行;走finally。
程序发生异常:走try报错前的代码--》会产生一个异常对象;
异常对象与catch块捕获的异常类型进行对比;
如果匹配:执行对应catch块代码;【只有一个匹配的catch块代码】
---走finally
如果不匹配:程序依然终止。 ---走finally
【问题:什么情况下,finally不走】
1.return :finally代码块依然执行;
先执行catch块中return前面的代码;
再执行finally块中的代码;
最后执行return。
2.System.exit(1);程序退出。 终止finally块的执行。
4.输出异常信息的形式:
System.out.println("提示信息");
System.out.println(e.getMessage());
e.printStackTrace();
5.throws关键字(声明异常):
---作用:我处理不了,你来处理,我告诉你应该注意的事项。
当你需要告诉调用者,该方法需要注意异常时,使用throws。
使用:
1.在方法定义的时候:
public void 方法名1() throws 异常类型1,异常类型2{
}
2.方法调用的时候:两种方法来处理:
A。使用try--catch进行异常捕获
try {
被调用的方法名1();
} catch (异常类型1 e) {
e.printStackTrace();
} catch (异常类型2 e) {
e.printStackTrace();
}finally{
}
B。不处理,继续往上声明异常:
public void 方法名2()throws 异常类型1,异常类型2{
被调用的方法名1();
}
6.throw(抛出异常):
---不是异常,为了引起调用者重视,手动抛出异常。
使用throw:
public void setsex(String str){
if(!str.equals("男")){
throw new ClassCastException("性别必须为男或者女");
}else{
String sex=str;
}
}
7.异常分类:
object
throwable
error Exception
checked(编译异常) Running(运行异常)
error :仅靠程序本身无法恢复的严重错误。
Exception:→由java应用程序抛出和处理的非严重错误。
checked:异常必须处理。(不处理,无法运行)
Running:不处理可以,一旦发生异常,程序终止。
8.log4j 开源日志文件:
作用:把异常信息,在一个独立的文件里进行记录或者是输出到控制台。
步骤:
1.把log4j-1.2.17.jar 方法项目的lib文件夹下;加载:选中--右键---buil path---add to buil path
2.把log4j.properties 放到项目src ,不能放到src外面,或者是src的子目录都不行。
3.调用:
创建logger对象:
public static Logger logger=Logger.getLogger(Test.class);
在catch块中写记录异常语句:
logger.debug("提示信息");
logger.debug(e.getMessage());
|
这里可以是debug,info,warm,error,fatal五个输出级别
4.刷新项目,出现 jbit.log文件,记录异常信息
java中的异常 try catch的更多相关文章
- Java中的异常-Throwable-Error-Exception-RuntimeExcetpion-throw-throws-try catch
今天在做一个将String转换为Integer的功能时,发现Integer.parseInte()会抛出异常NumberFormatException. 函数Integer.parseInt(Stri ...
- java中的异常以及 try catch finally以及finally的执行顺序
java中的 try.catch.finally及finally执行顺序详解: 1.首相简单介绍一下异常以及异常的运行情况: 在Java中异常的继承主要有两个: Error和Exception 这两个 ...
- 【Java心得总结二】浅谈Java中的异常
作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 就是面向 ...
- Java中的try,catch,finally
讲解的是关于java中关于try.catch.finally中一些问题 下面看一个例子(例1),来讲解java里面中try.catch.finally的处理流程 public class TryCat ...
- Java中的异常详解
一.异常定义 阻止当前方法或作用域继续执行的问题,称为异常 二.异常分析 所有不正常类都继承Throwable类,这个类主要有两个子类Error类和Exception类.Error指系统错误 ...
- Java中的异常和处理详解
简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言风格:用函数返回值作为执行状态?. ...
- Java中的异常简介
Java中异常的分类 Java中的异常机制是针对正常运行程序的一个必要补充,一般来说没有加入异常机制,程序也能正常运营,但是,由于入参.程序逻辑的严谨度,总会有期望之外的结果生成,因此加入异常机制的补 ...
- java中的异常类
Java中的异常: 1. Throwable是所有异常的根,java.lang.Throwable Throwable包含了错误(Error)和异常(Exception),Exception又包含了运 ...
- Java 中的异常
前段时间集合的整理真的是给我搞得心力交瘁啊,现在可以整理一些稍微简单一点的,搭配学习 ~ 突然想到一个问题,这些东西我之前就整理过,现在再次整理有什么区别嘛?我就自问自答一下,可能我再次整理会看到不一 ...
随机推荐
- 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能
上传模块在web开发中是很常见的功能也是很重要的功能,在web应用中需要上传的可以是图片.pdf.压缩包等其它类型的文件,同时对于图片可能需要回显,对于其它文件要能够支持下载等.在守望博客系统中对于上 ...
- c++学习书籍推荐《C++语言的设计与演化》下载
百度云及其他网盘下载地址:点我 编辑推荐 <C++语言的设计与演化>由C++语言的设计者Bjarne Stroustrup著就,是一本阐述C++语言的设计及开发过程的无可争辩的内情手册.S ...
- java中几个常见的问题
1.正确使用equals方法 Object的equals方法容易抛出空指针异常,应使用常量或确定有值的对象来调用equals方法 例如: //不能使用一个值为null的引用类型变量来调用非静态方法,否 ...
- Java平台调用Python平台已有算法(附源码及解析)
1. 问题描述 Java平台要调用Pyhon平台已有的算法,为了减少耦合度,采用Pyhon平台提供Restful 接口,Java平台负责来调用,采用Http+Json格式交互. 2. 解决方案 2.1 ...
- 以Spring Cache扩展为例介绍如何进行高效的源码的阅读
摘要 日常开发中,需要用到各种各样的框架来实现API.系统的构建.作为程序员,除了会使用框架还必须要了解框架工作的原理.这样可以便于我们排查问题,和自定义的扩展.那么如何去学习框架呢.通常我们通过阅读 ...
- BZOJ3033 太鼓达人题解
太鼓达人 时间限制: 1 Sec 内存限制: 128 MB 题目描述 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是 ...
- 【转载】DOMContentLoaded与load的区别
DOMContentLoaded与load的区别 (1)在chrome浏览器的开发过程中,我们会看到network面板中有这两个数值,分别对应网 络请求上的标志线,这两个时间数值分别代表什么? ( ...
- Cocos2d-x 3.x 学习笔记(三):Scheduler Timer 调度与定时
1. 概述 Cocos2d-x 的 Scheduler 离不开 Timer.Timer 类是定时器,用来规定一个回调函数应该在何时被触发.Timer 封装了已运行时间.重复次数.已执行次数.延迟秒数 ...
- samrt210开发板ping-系列问题(开发板ping通主机,主机ping通虚拟机,唯独~开发板ping不通虚拟机)
硬件:PC机.虚拟机(Linux).开发板(smart210) 常用模型: 注:1).有线网卡与无线网不可同连一个路由器,不可在同网段: 2).vmware选择桥接模式,虚拟网络适配器选定具体的网卡名 ...
- 01、HTML 简介
实例: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title ...