Java异常

1、异常初见

System.out.println(1/0); 

运行上面语句之后打印出:
Exception in thread "main" java.lang.ArithmeticException: / by zero 程序运行之后,在控制台会打印一串信息;这段信息,在Java中叫做异常。

2、什么是异常?

Java程序中异常:程序在运行过程产生的不正常情况;
编译没有问题,到运行的时候,出现错误. 这种现象叫异常。

3、常见异常

1.java.lang.NullPointerException

int a [] = null;
System.out.println(a.length);

2.java.lang.ArrayIndexOutOfBoundsException

int a [] = {};
a[0] = 10;

4、异常体系

ArithmeticException,
NullPointerException,
ArrayIndexOutOfBoundsException, 从上面的3个异常可以看出,在Java中使用不同的类来描述不同的异常。

从图中可以看出:

1、Throwable:Java语言中所有错误或异常的超类;
2、下面有两个子类,一个 Error(错误),一个Exception(异常)

4.1 Error 和 Exception的区别是什么?

其实这两个泛指都是异常.

Throwable
|---- Error 系统程序中,不能处理的错误,比如内存溢出.
|---- Exception 可以进行处理的.

5、异常处理

如果我们想让	System.out.println(1/0); 执行,该怎么办?
try {
System.out.println(1/0);
} catch (Exception e) {
System.out.println("异常所属类:" + e.getClass()); //获取抛出的异常类的类名
System.out.println("异常的原因:" + e.getMessage()); //获取具体的异常原因
}

5.1 能不能同时捕获到多个异常?

6、finally 语句

语法结构:
try{
可能出现异常的代码
}catch(异常类型 e){
处理异常:
1 打印到控制台
2 保存到文件
3 还可能向外抛出新的异常
}finally{
} 注意:finally后面没有小括号;
6.1 finaly 单词什么含义,表示最终的意思,那里面做什么事情?
1.关闭流资源(IO流部分讲解)或者 释放锁--线程(以后课程学习)

简单说明一下: 这里的流,类似于水流的意思,比如一个水龙头打开,流出水,突然发生地震了(产生异常),没有关闭水龙头,那水就一直流着,然后可能导致短路,电路中断,然后就可能引起火灾;所以希望中途不管发生什么异常情况,最终都应该关闭水龙头。这样就可以把关闭的代码写在finally里面;

2.释放锁 比如上厕所需要上锁,然后完事了之后,最后在开锁出来。
特点:如果在finally前面没有执行系统退出(system.exit(0))的语句,此处的代码始终都会执行。 3.不建议此处放return语句来返回一个数据(让程序难以理解,并且这里也不应该放return) 对于上面的结构,也有变种,比如:
try{
}finally{
}
只有try-finally,没有catch,这种结构在讲线程,释放锁学习

7、异常 throw 与 throws

练习:计算两个整数相除。

8、自定义异常

在Java异常体系已经包含了很多异常类,但是还是不能满足开发的日常情况那应该怎么办?

如何自定义异常?

场景:
1。假设用户注册过程中,发现用户名重复了,把这种情况定义为异常类型;
2。设计一个用户注册的方法,方法里面判断用户注册的用户名是否重复,如果重复,就产生一个异常对象;
3。调用注册方法来注册一个账号,就会产生一个异常。产生异常之后,就选择是抛出还是处理.

1.定义一个异常类(用户名重复异常)

package com.rimi.exception;

public class NameRepeatException extends Exception {
public NameRepeatException(){
super();
}
public NameRepeatException(String msg){
super(msg);
} }

2.写个测试类

package com.rimi.exception;

public class Test {
public static void main(String[] args) { String[] names = { "张三", "李四", "王二", "麻子", };
try {
login("张三", names);
} catch (Exception e) {
// TODO: handle exception
System.out.println("异常抛出:" + e.getMessage());
} } public static void login(String name, String[] names) throws NameRepeatException {
for (String string : names) {
if (string.equals(name)) {
throw new NameRepeatException("名字重复了");
}
}
} }

java9 - 异常处理的更多相关文章

  1. java-9 异常处理

    1.异常处理的基础知识 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如 ...

  2. Java基础教程——字节流

    IO流 水流 特点 连续性 逝者如斯夫,不舍昼夜: 方向性 一江春水向东流.水往低处流.百川东到海,何时复西归?少壮不努力,老大徒伤悲! 源头尽头 唯有源头活水来:覆水难收 Java里的IO也有这样的 ...

  3. Java9 新特性 详解

    作者:木九天   <   Java9 新特性 详解  > Java9 新特性 详解 摘要: 1.目录结构 2.repl工具 jShell命令 3.模块化 4.多版本兼容jar包 5.接口方 ...

  4. 什么?Java9这些史诗级更新你都不知道?Java9特性一文打尽!

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  5. 关于.NET异常处理的思考

    年关将至,对于大部分程序员来说,马上就可以闲下来一段时间了,然而在这个闲暇的时间里,唯有争论哪门语言更好可以消磨时光,估计最近会有很多关于java与.net的博文出现,我表示要作为一个吃瓜群众,静静的 ...

  6. 基于spring注解AOP的异常处理

    一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...

  7. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...

  8. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  9. IL异常处理

    异常处理在程序中也算是比较重要的一部分了,IL异常处理在C#里面实现会用到一些新的方法 1.BeginExceptionBlock:异常块代码开始,相当于try,但是感觉又不太像 2.EndExcep ...

随机推荐

  1. 使用异步方法在XAML中绑定系统时间

    最近的工作需要在程序界面上显示实时的系统时间,网上查了查大部分都是用Timer或者线程来实现. 个人非常不喜欢用Timer,感觉这东西有点太耗资源,然后思考了下觉得更好的方法应该是使用异步的方法在委托 ...

  2. Python+Selenium安装及环境配置

    一.Python安装 Window系统下,python的安装很简单.访问python.org/download,下载最新版本,安装过程与其他windows软件类似.记得下载后设置path环境变量,然后 ...

  3. jQuery hover() 方法

    $("p").hover(function(){ $("p").css("background-color","yellow&qu ...

  4. crontab执行带参数的php脚本,并取得参数[转]

    现在越来越喜欢用linux了,程序当中也去掉了很多触发性判断,改用了借用linux的crontab的特性来进行,这样程序效率确实是高了很多. 比如我们每月1号清空月点击,比如每天凌晨统计上一天的访问报 ...

  5. 【javascript】onblur调用函数失效问题记录

    在处理页面上一个失焦效果时遇到了  xxxx is not a function 这样的错误,但函数确实有定义成功 ,经过测试发现是 id 值与函数名一致导致的问题,但是产生的原因没有找到详细的解释 ...

  6. 配置struts2拦截器

    <!-- 配置拦截器 -->        <interceptors>            <!-- 声明拦截器 -->            <inte ...

  7. 《struts2》:指定多个配置文件和默认Action

    转载:http://m.blog.csdn.net/article/details?id=51212968

  8. zabbix监控-percona监控MySQL(三)

    监控MySQL实战 标签(linux): zabbix & mysql 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 percona为MySQL制作了专 ...

  9. 【php】phpExcel使用教程,如何导出excel表格

    [1]下载phpExcel类文件 可在官方去下载 我们只需要classes中的文件,把Classes文件复制到项目中 只需要2个文件就可以了  一个就是phpExcel(刚才我们复制过来的文件 Cla ...

  10. HashMap原理总结

    来总结一下HashMap的原理 1.HashMap当中有一个内部类,它叫Node,然后这个Node呢,它其实是实现了Map.Entry接口,这个接口当中有几个抽象的方法和几个具体的方法.其中Map.E ...