如果有时学东西概念太多了,可以反着学,从结果到过程,从代码到概念,也许就不会那么枯燥了,比如学反射的时候。

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异常复习的更多相关文章

  1. Java异常之自定义异常

    哎呀,妈呀,又出异常了!俗话说:"代码虐我千百遍,我待代码如初恋". 小Alan最近一直在忙着工作,已经很久没有写写东西来加深自己的理解了,今天来跟大家聊聊Java异常.Java异 ...

  2. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  3. Java异常的10个关键知识点

    前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油. 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题.比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异 ...

  4. 《Java基础复习》—常识与入门

    突然发现自己Java基础的底子不到位,复习! 所记知识会发布在CSDN与博客网站jirath.cn <Java基础复习>-常识与入门 一.Java语言的知识体系图 分为三部分 编程语言核心 ...

  5. java基础复习记录

    java基础复习记录(数组.对象.异常) 数组 数组的定义 数组是相同类型数据的有序集合.如:篮球队就是一个数组,队员球服上有号码,相当于索引.通过某一个的某一个号码来确认是某一个队员.数组中索引从0 ...

  6. 浅谈java异常[Exception]

    学习Java的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Java学习交流群,群号码:589809992 我们一起学Java! 一. 异常的定义 在<java编程思想 ...

  7. 基础知识《十》java 异常捕捉 ( try catch finally ) 你真的掌握了吗?

    本文转载自  java 异常捕捉 ( try catch finally ) 你真的掌握了吗? 前言:java 中的异常处理机制你真的理解了吗?掌握了吗?catch 体里遇到 return 是怎么处理 ...

  8. Java异常体系及分类

    上图是基本的java异常体系结构. 主要分为2大类:Error和Exception 1.Error:描述了Java运行系统中的内部错误以及资源耗尽的情形.应用程序不应该抛出这种类型的对象,一般是由虚拟 ...

  9. 第11章 Java异常与异常处理

    1.Java异常简介 1.什么是异常异常出现的时候代码会无法正常运行下去,会产生各种问题2.捕捉异常的作用提早发现异常,方便查找问题,并给出解决方法3.Java中的异常1.Java中所有不正常的类都是 ...

随机推荐

  1. HTML表单的运用

    没学习HTML表单之前,觉得文本框.密码框.隐藏域.单选按钮.复选框等这些在平常页面常见到的表单不起眼,挺简单,到自己用代码区实现将它们灵活串联运用起来,才发现一点都不简单.看着容易,自己操作还是出现 ...

  2. ArchLinux 添加国内镜像源

    $ vim /etc/pacman.d/mirrorlist # 在最前面添加一行,这样就成功添加了网易的源: Server = http://mirrors.163.com/archlinux/$r ...

  3. mysql数据库恢复

    数据库恢复注意事项: # 数据恢复和字符集关联很大,如果字符集不正确会导致恢复的数据乱码. #MySQL命令和source命令恢复数据库的原理就是把文件的SQL语句,在数据库重新执行的过程. 1.利用 ...

  4. 使用TensorFlow Serving优化TensorFlow模型

    使用TensorFlow Serving优化TensorFlow模型 https://www.tensorflowers.cn/t/7464 https://mp.weixin.qq.com/s/qO ...

  5. 设置tabBar中间的按钮比较大的发布

    MainTabBarController.h UITabBarItem *item = [self.tabBar.items objectAtIndex:index]; [item setTitle: ...

  6. Python 字典 setdefault() 方法

    描述 Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None. get() 和 setdefau ...

  7. 分块学习笔记qwq

    我没想到居然就学到分块了...哇我还一直觉得分块听起来挺牛逼的一直想学的来着qwq(其实之前好像vjudge上有道题是用分块做的?等下放链接qwq 所以想着就写个学习笔记趴qwq 首先知道分块的时间复 ...

  8. nginx 哈希表数据结构

    1.哈希表ngx_hash_t的优势和特点 哈希表是一种典型的以空间换取时间的数据结构,在没有冲突的情况下,对任意元素的插入.索引.删除的时间复杂度都是O(1).这样优秀的时间复杂度是通过将元素的ke ...

  9. sparkuser is not in the sudoers file. This incident will be reported.

    切换到root身份$su -(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用户的环境变量,用"su ...

  10. 一次性从git远程仓库中克隆到本地。

    自动化工具 一次性从git远程仓库中克隆到本地. import os # git操作 将远程repo克隆到本地 def git_clone_cd_pull(url): # 获取仓库名称 如fullsp ...