---恢复内容开始---

  在Java编译过程中,有时候会出现输入未按照规定输入的情况,此时需要警告用户输入错误,这就会是程序运行过程中出现异常。异常就是可预测但是又没办法消除的一种错误。所以在编写过程中,为了在程序当中不发生这样的错误,就会将容易发生异常的代码用try catch进行处理,或者通过throws将异常向上抛出,由上一级进行接收并处理。
  如果发生异常而不去处理,会导致程序中断,也就是程序无法继续运行。

  下面来详细的说一下有关异常的一些问题。

一、异常的产生

  异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就将中断执行。

  例如:

  在编写的时候,比如说你想把一个字符串型转换成int型的,如果这样是没问题的。

  String s = "1";

int i;

  i = Integer.parseInt(s);

  这样是不会出现错误的,但是如果你这样写,就会出现错误。

  String s = "a";

int i;

  i = Integer.parseInt(s);

在编译过程中,编译器不会给你这方面的提示。在开始的时候我已经说过,异常的出现是程序运行到此处的时候才产生的。所以,在编写的时候并不会给你提醒错误,而是在运行的时候才会出现。

二、异常的类型

  一般来说,异常分为可检测异常和非检测异常。

  1、可检测异常

  可检测异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则。

  2、非检测异常

  非检测性异常就是当你运行的时候才会有问题。换句话说就是运行时异常和编译时异常。比如我上面所说的类型的强制转换,在运行过程中,会是程序在运行到此处时中止。

三、出现异常的解决方法

  在Java中,对于异常有很多的分类,要想做一个合格的程序员,就必须了解这些异常,并学会解决他们的方法。

  常见的异常有:  

    算术异常类:ArithmeticExecption

    空指针异常类:NullPointerException

    类型强制转换异常:ClassCastException

    数组负下标异常:NegativeArrayException

    数组下标越界异常:ArrayIndexOutOfBoundsException

    违背安全原则异常:SecturityException

    文件已结束异常:EOFException

    文件未找到异常:FileNotFoundException

    字符串转换为数字异常:NumberFormatException

    操作数据库异常:SQLException

    输入输出异常:IOException

  在这里就举这些例子,具体请参考  https://www.cnblogs.com/cvst/p/5822373.html

四、有关自定义异常

  自定义异常就是Java本身不包含的异常类型,需要程序员在编写的时候自己去定义。

  例如,在写计算三角形面积时,我们需要判断输入的三角形的三个边是否能构成三角形,但是,在实际操作过程中,不能构成三角形的三边仍然能计算出面积,这就是出现异常的一个类型。当然,在处理这个问题的时候我们可以调用Java本身包含的异常进行处理,但是,我们也可以自定义一个异常来进行抛出。

  如:

   

  这是我上面提到的有异常但是不提醒的情况。我们可以根据自定义异常来解决这个问题。

  自定义异常:

  

  异常抛出:

  

  运行结果:

  

  

  自定义异常一般这样来定义

  class  自定义异常类  extends  异常类型(Exception){

    // 因为父类已经把异常信息的操作都完成了,所在子类只要在构造时,将异常信息传递给父类通过super 语句即可。

    // 重写 有参 和 无参 构造方法

   }

例如我上面所提到的方法。具体内容给大家推荐一个网址  https://blog.csdn.net/qq_18505715/article/details/73196421   又前面大佬的总结,在这里我就不再重复了。

Java捕获异常的问题的更多相关文章

  1. TJI读书笔记16-异常处理

    TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...

  2. jsp标准标签库

    抄袭自:http://www.cnblogs.com/hongten/archive/2011/05/14/2046005.html JSP标准标签库     Pass by xkk ,and aut ...

  3. pl/sql的介绍

    为什么需要pl/sql编程? 因为使用纯的sql语句来操作数据库,有先天性的技术缺陷: 1.不能模块编程: 2.执行速度慢: 3.安全性有问题: 4.浪费带宽. pl/sql是什么? pl/sql(p ...

  4. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  5. Java多线程之捕获异常

    1.主线程不能捕获到子线程的异常 package Thread.Exection; import java.util.concurrent.ExecutorService; import java.u ...

  6. java 线程 捕获异常

    java 线程 捕获异常  来自:thinking in java 4 文件夹20.2.13 package org.rui.thread.concurrent; import java.util.c ...

  7. Java中的异常处理:何时抛出异常,何时捕获异常,何时处理异常?

    Java中的异常处理:何时抛出异常,何时捕获异常? 2017-06-07 1 异常分类 Throwable对象可以分为两组: 一组是unchecked异常,异常处理机制往往不用于这组异常,包括: Er ...

  8. java异常——捕获异常+再次抛出异常与异常链

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常--捕获异常+再次抛出异常与异常链 的相关知识: [1]捕获异常相关 1.1)如果 ...

  9. Java修炼——异常的概念以及处理方式(捕获异常)

    异常概念分类 异常( Exception 也称例外)就是在程序的运行过程中 所发生的不正常的事件,它会中断正在运行的程序  所需文件找不到  网络连接不通或中断  算术运算错 (被零除-)  ...

随机推荐

  1. MySQL 有用的查询语句

    查看指定数据库 db_name 的字符集和排序规则 USE db_name; SELECT @@character_set_database, @@collation_database; 显示索引信息 ...

  2. TypeScript 知识点

    TypeScript 通过 类型批注 提供静态类型以在编译时启动类型检查. 基本批注类型是number.bool.string.而弱或动态类型是any. typescript 使用 作用 语句 全局安 ...

  3. mysql 不允许分组的问题

    异常信息:this is incompatible with sql_mode=only_full_group_by 解决办法: 找到  my.cnf  find / -name my.cnf 然后在 ...

  4. C语言中基本的数据类型

    一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码.为了用户的方便,C99标准的C语言硬件为我 ...

  5. springboot学习心得

    1.mvn package --加载运行一个含有pom.xml的目录并生成target目录2.mvn dependency:tree 显示项目所有依赖的树状结构3.业务委托给了Spring Boot的 ...

  6. 关于AXI_Quad_SPI的寄存器配置

    关于AXI_Quad_SPI的寄存器配置 1.核初始化配置 首先是: 40:0000_000A 1C:8000_0000 28:0000_0004 2.命令与dummy_data 60:000001E ...

  7. gtid error set test

    1.从库报主键重复(Errno: 1062)#create test data 1062create table t1 (id tinyint not null primary key,ename v ...

  8. Linux Docker安装Jenkins

    安装环境 操作系统 centos7.3 安装Docker,安装及配置见 <Docker之Docker介绍及安装配置> 安装Jenkins 下载Jenkins 命令:sudo docker ...

  9. 在windows 7中vagrant up 无反应,没任何信息输出

    本文转载自:https://blog.csdn.net/cow66/article/details/77993908 我的系统是windows 7 安装了vagrant,当运行vagrant up时, ...

  10. 使用RetionalRose根据现有的java工程逆向生成类图

    1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类 ...