java异常复习
如果有时学东西概念太多了,可以反着学,从结果到过程,从代码到概念,也许就不会那么枯燥了,比如学反射的时候。
java异常复习
异常和错误的区别?
异常:程序或环境本身出现错误。(程序员可以捕获并处理)
错误:内部系统错误。(程序员不用做什么,程序员通知用户关掉它即可。)
类Scanner、nextInt用法及其含义:
import java.util.Scanner;
public class TestException2{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
//
int a,b;
try{
System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt(); System.out.println("两数相除结果为:"+a/b);
}catch(InputMismatchException e){
System.out.println("你输入的不是数字,这里必须是数字。");
}
} }
/*
类Scanner:一个可以使用正则表达是来解析基本类型
和字符串的简单文本扫描器。
如:用户能够从System.in中读取一个数:
Scanner sc=new Scanner(System.in);
int i=sc.nextInt();
//nextInt():类java.util.Random中的方法,返回下一个伪随机数(这里的随机是相对的)
随机数生成器中的一个均匀分布的一个int值
下面是从一个字符串读取若干项的例子:
String input = "1 fish 2 fish red fish blue fish";
Scanner s = new Scanner(input).useDelimiter("\\s*fish\\s*");
System.out.println(s.nextInt());
System.out.println(s.nextInt());
System.out.println(s.next());
System.out.println(s.next());
s.close();
输出为:
1
2
red
blue
是如何实现跳读的?
*/
异常语法格式总结:
try{
//程序需要执行的代码,可能有错
}catch(异常类 变量名){
//若出现异常类,要执行的代码块
}
//异常类自定义或继承Exception类或子类定义的,
异常对象一是运行时环境自动抛出的,比如除数不能为零,二是用户自定义的。
finally:任何情况下必须执行的代码,finally唯一不被执行的情况是存在System.exit()终止了JVM的运行。
import Java.util.InputMismatchException;
import Java.util.Scanner; public class TestException{
public static void main(String[] args){
Scanner input=new Scanner(System.in); int a,b; try{
System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt();
System.out.println("两数相除结果为:"+a/b);
}
catch (InputMismatchException e) {
System.out.println("你输入的不是数字,这里必须是数字!");
}catch(ArithmeticException e){
System.out.println("你输入的数字除数为0");
Sytem.out.println(e.getMessage());
}catch (Exception e) {
System.out.println("程序出错了!")
}finally{
System.out.println("无论异常与否,都会执行这里!");
}
}
}
4.throws
有些异常用户不想处理时,用户可能没办法处理或者不想处理,则可以把方法头加上throws语句来放弃本方法处理。
import Java.util.InputMismatchException;
import Java.util.Scanner; public class TestException{
public static void main(String[] args) throws InputMismatchException,
ArithmeticException,Exception{
Scanner input=new Scanner(System.int);
int a,b; System.out.println("输入被除数:");
a=input.nextInt();
System.out.println("输入除数:");
b=input.nextInt();
Sysem.out.println("两数相除的结果是:"+a/b); }
}
如果JVM追溯到调用栈最底部main方法时,仍没有找到异常代码块,则
1)调用异常对象printStackTrace()方法,打印方法调用栈的异常信息。
2)如果出现异常线程为主线程,则程序运行终止;若非主线程,则终止,让其他线程继续。
说明:用throws是一种消极的异常用法,所以不提倡,且耗资源和时间多。
(增加了JVM的运行时间)
5.自定义异常:类java.lang.Throwable是所有类的基类,它包括两个子类:Exception和Error。Exception是
描述程序捕获的异常,如ClassNotFoundException。Error类用于指示合理应用程序但是由于
JVM出现的错误,比如虚拟机错误VirtualMachineError。(错误不允许程序员捕获)
自定义异常可以继承Throwable类或Exception,而不要继承Error类。且自定义异常间可以有继承。
public要为自定义异常设计工作函数,为方便构造自定义异常对象。
public class MyException extends exception{ public MyException(){ super(); } public MyException(String msg){ super(msg); } }
上面这种MyException类才叫异常类,异常类通过throw关键字来手动抛出异常。
手动抛出异常语法格式:
throw new 异常类();
如:
public void setAge(int age) throws MyException{
if(age<0 || age>100){
throw new MyException(“年龄不符合要求”);
}else{
this.age=age;
}
} …
//测试类中
try{
t1.setAge(1000);
}catch(MyException e){
e.printStackTrace();
}
或者
在测试类中用throws来继承MyException,交给JVM来处理
即public static void main(String[] args)throws MyException{…}
java异常复习的更多相关文章
- Java异常之自定义异常
哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...
- Java基础复习笔记系列 八 多线程编程
Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...
- Java异常的10个关键知识点
前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...
- 《Java基础复习》—常识与入门
突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...
- java基础复习记录
java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...
- 浅谈java异常[Exception]
学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...
- 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?
本文转载自 java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...
- Java异常体系及分类
上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...
- 第11章 Java异常与异常处理
1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...
随机推荐
- TOP100summit:【分享实录-封宇】58到家多端消息整合之路
本篇文章内容来自2016年TOP100summit 58到家架构师封宇的案例分享. 编辑:Cynthia 2017年11月9-12日北京国家会议中心第六届TOP100summit,留言评论有机会获得免 ...
- MapReduce规约
深入了解Combiners编程(相当于Map端的Reduce) 每一个map可能会产生大量的输出,combiner的作用就是在map端对输出先做一次合并,以减少传输到reducer的数据量. comb ...
- PAT-GPLT L1-033 - 出生年 - [简单模拟]
题目链接:https://www.patest.cn/contests/gplt/L1-033 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standar ...
- 新购买的vps应该做的几件事情
1. 修改root密码 passwd root 2.新建用户 useradd vinentguo 3.配置免密码登陆 .使用新建用户登陆vps. mkdir ~/.ssh/ch ...
- OKEx货币对价格数量长度及精度
长度 precisions = [["bch_btc","0.001","0.00000001"], ["ltc_btc" ...
- CH0201 费解的开关 枚举
正解:枚举 解题报告: 入门傻逼题,思维难度不高代码量极小,非常适合上手 然后傻逼的我第二次看这道题的时候依然没想到解法:D 没有办法,就想着写个笔记好歹记录一下以后多复习几次就记着了趴qwq 就是, ...
- nodejs(五)同步异步--USING SETTIMEOUT INSTEAD OF SETINTERVAL TO FORCE SERIALIZATION
Let’s say you want a function that does some I/O — such as parsing a log fi le — that will periodica ...
- 几种常见web攻击手段及其防御方式
XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 XSS 概念 全称是跨站脚本攻击(Cross ...
- "portrait"(竖屏) "landscape"(横屏) css设置
取决于浏览器或者设备的方向,HTML元素总是会有"portrait"(竖屏) "landscape"(横屏) class. 你可以在css中如下使用它们: .p ...
- 新版微信小程序即将上线 新增微信支付功能
<经济参考报>消息,新版微信小程序正在测试中,有可能将在近期正式上线.新版小程序增加了“附近门店”功能的接口,微信用户可以通过定位功能,查看提供线下服务的各类门店,并直接利用小程序实现包括 ...