java-异常处理1
概要图

异常讲解流程图

一 java 异常和错误层次图
1.1 图1

1.2 图2

二 异常生的过程
1 异常可以结束函数.
同时也让程序结束了.

三 异常和错误的发生和区别
Java运行时期发生的问题就是异常。
Java中运行时发生的除了异常Exception还有错误Error。
异常:通常发生可以有针对性的处理方式的。如:定义一个数组arr[3],但是你要访问第4个值 .就会发生数组index越界
错误:通常发生后不会有针对性的处理方式。如:定义一个数组arr[1024*1024*1024] 发生内存不足
Error的发生往往都是系统级别的问题,都是jvm所在系统发生的并反馈给jvm的。
无法针对处理,只能修正代码。
3.1 异常
如:定义一个数组arr[3],但是你要访问第4个值 .就会发生数组index越界

3.2 错误
如:定义一个数组arr[1024*1024*1024] 发生内存不足

四 异常的的简单应用
异常的应用:
在编写程序时,必须要考虑程序的问题情况。
举例:卖水果功能需要传递钱参数,有可能有假币。
所以定义定义程序需要考虑程序的健壮性。
加入一些逻辑性的判断。
4.1 自己抛异常
class Demo
{
/*
对给定的数组通过给定的角标获取元素。
*/
int getElement(int[] arr,int index)
{
/*
jvm出了问题,自己打包对象并抛出。
但是它所提供的信息不够给力。想要更清晰,需要自己写。
它的抛出不满足我们的要求。准备自己抛。
*/
// 自己写的
if(arr==null)
{
throw new NullPointerException("arr指向的数组不存在");
} if(index< || index>=arr.length)
{
// 2
//该条件如果满足,功能已经无法继续运算。这时 就必须结束功能,并将问题告知给调用者。这时就需要通过异常来解决。
//怎么用呢?
//1,创建一个异常对象。封装一些提示信息(自定义)。
//2,需要将这个对象告知给调用者。怎么告知呢?怎么将这个对象传递到调用者处呢?通过关键字throw就可以完成。 throw 异常对象;
//3,throw用在函数内,抛出异常对象,并可以结束函数。
throw new ArrayIndexOutOfBoundsException("错误的角标,"+index+"索引在数组中不存在");
} int element = arr[index];
return element;
}
}
测试
class ExceptionDemo3
{
public static void main(String[] args)
{
Demo d = new Demo();
int[] arr = {,,};
int num = d.getElement(null,); //arr指向的数组不存在
System.out.println("num="+num); System.out.println("over"); } }
4.2 小练习
4.2.1 问题
public class Test {
public static void main(String[] args) {
Person p = new Person("qq",-);
}
}
class Person
{
private String name;
private int age;
Person(String name,int age)
{
//加入逻辑判断。
if(age< || age>)
{
System.out.println("年龄数值错误");
return;//终止初始化。
}
this.name = name;
this.age = age;
}
//定义Person对象对应的字符串表现形式。覆盖Object中的toString方法。
public String toString()
{
return "Person[name="+name+",age="+age+"]";
}
}
结果

这样做虽然可以编译并运行看到提示消息,但是问题却没有发生,程序还在继续执行。并打印p对象。
这是不合理的。
4.2.2改进用异常处理
package test;
public class Test {
public static void main(String[] args) {
Person p = new Person("qq", -);
}
}
class Person {
private String name;
private int age;
Person(String name, int age) {
// 加入逻辑判断。
if (age < || age > ) {
throw new IllegalArgumentException(age + ",年龄数值非法"); // 这里发生了变化
}
this.name = name;
this.age = age;
}
// 定义Person对象对应的字符串表现形式。覆盖Object中的toString方法。
public String toString() {
return "Person[name=" + name + ",age=" + age + "]";
}
}
结果

五 异常的自定义和体系
5.1 自定义异常思考
能不能定义一个符合我的程序要求的问题名称。
异常的信息都可以自定义,那么异常的名字是否可以定义呢?是否可以定义成更符合自己程序的阅读呢?
之前的几个异常都是java通过类进行的描述。并将问题封装成对象,这是符合面向对象思想。
其实:异常就是将问题封装成了对象。
所以我也准备对自己所需要的问题进行类的描述。
5.2 自己定义并抛出
package test;
public class Test {
public static void main(String[] args) {
Person p = new Person("qq", -);
}
}
class NoAgeException{
NoAgeException(){}
NoAgeException(String message){}
}
class Person {
private String name;
private int age;
Person(String name, int age) {
// 加入逻辑判断。
if (age < || age > ) {
throw new NoAgeException(age + ",年龄数值非法");
}
this.name = name;
this.age = age;
}
// 定义Person对象对应的字符串表现形式。覆盖Object中的toString方法。
public String toString() {
return "Person[name=" + name + ",age=" + age + "]";
}
}
结果

5.3 自定义异常加上父类Throwable
class NoAgeException extends Throwable{
NoAgeException(){}
NoAgeException(String message){}
}
结果

5.4 自定义异常加上父类RunTimeException

加上super(message)得到结果

java-异常处理1的更多相关文章
- 札记:Java异常处理
异常概述 程序在运行中总会面临一些"意外"情况,良好的代码需要对它们进行预防和处理.大致来说,这些意外情况分三类: 交互输入 用户以非预期的方式使用程序,比如非法输入,不正当的操作 ...
- java异常处理(父子异常的处理)
我当初学java异常处理的时候,对于父子异常的处理,我记得几句话“子类方法只能抛出父类方法所抛出的异常或者是其子异常,子类构造器必须要抛出父类构造器的异常或者其父异常”.那个时候还不知道子类方法为什么 ...
- Java 异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用System.out ...
- 《转载》Java异常处理的10个最佳实践
本文转载自 ImportNew - 挖坑的张师傅 异常处理在编写健壮的 Java 应用中扮演着非常重要的角色.异常处理并不是功能性需求,它需要优雅地处理任何错误情况,比如资源不可用.非法的输入.nul ...
- JAVA 异常处理机制
主要讲述几点: 一.异常的简介 二.异常处理流程 三.运行时异常和非运行时异常 四.throws和throw关键字 一.异常简介 异常处理是在程序运行之中出现的情况,例如除数为零.异常类(Except ...
- Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻 ...
- 深入理解java异常处理机制
异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...
- Java提高篇——Java 异常处理
异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误java.lang.Error:如果你用Syst ...
- java异常处理的设计
有一句这样话:一个衡量Java设计师水平和开发团队纪律性的好方法就是读读他们应用程序里的异常处理代码. 本文主要讨论开发Java程序时,如何设计异常处理的代码,如何时抛异常,捕获到了怎么处理,而不是讲 ...
- java异常处理机制
本文从Java异常最基本的概念.语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则.并且作者提出了自己处理一个大型应用系统 ...
随机推荐
- Duilib入门文档提供下载
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] Duilib入门文档 基本框架 编写界面xml 响应事件 贴图描述 类html文本描述 动态换肤 Dll插件 资源打包 Duil ...
- 三次面试总结以及今后的todolist
金三银四跳槽季,按耐不住蠢蠢欲动的跳槽心,投了好多家的前端招聘,目前面了三家,有把握的零家.古人吾日三省吾身,我没那么高的觉悟,三面省一下自身,太咸鱼了是的我就是这么觉得的. 第一家公司在景田,很远, ...
- Vue.js项目部署到服务器
1.申请服务器 2.配置Xshell 3.在服务器手动建自己的根目录,把根目录的文件名复制给项目里面config下面的index.js 4.项目开始打包 npm run build 5.打包完成之后把 ...
- hession RMI 远程调用
/** * * @author administror * 在java中,需要去extends 继承java.rmi.Remote 接口,才能称为在于服务器流的远程对象. * 各客服端调用 * */p ...
- Unity优化垃圾回收GC
- 从0开始学习ssh之basedao
用于所有dao里边会有许多相同的方法,例如save,update等等.应此设计一个basedao,所有dao都继承它.这样可以省去许多工作量. basedao如下 package cn.itcast. ...
- 廖雪峰Java10加密与安全-4加密算法-1对称加密算法
1.对称加密算法 加密和解密使用同一个密钥,例如WinRAR. WinRAR在对文件进行打包的时候,可以设置一个密码,在解压的时候需要使用同样的密码才能正确的解压. 加密:encrypt(key,me ...
- CA证书制作
目录 手动制作CA证书 1.安装 CFSSL 2.初始化cfssl 3.创建用来生成 CA 文件的 JSON 配置文件 4.创建用来生成 CA 证书签名请求(CSR)的 JSON 配置文件 5.生成C ...
- jeecms框架单点登录功能的实现
单点登录的功能实现主要原理: 1: 在点击登录按钮的时候使用reponse.addCookie()方法向浏览器发送cookie: 2: 在前段拦截器中的request.getCookie()在接收到设 ...
- Matlab 路径函数
1 fileparts [pathstr,name,ext] = fileparts(filename) 将filename字符串分解成路径,文件名和文件后缀.文件可以不存在,ext中含有前缀dot( ...