文章目录

  • 1.程序设计的三大错误
    • 1.1.语法错误
    • 1.2.逻辑错误
    • 1.3.运行错误
  • 2.异常处理和断言
    • 2.1.try-catch语句处理异常
  • 2.断言
    • 2.1 断言的定义
    • 2.2 如何使用断言

1.程序设计的三大错误

1.1.语法错误

最低级错误,由编译器发现。这个错误就是你错误使用Java语法导致的编译失败,这类错误一般在集成开发工具中编写代码的时候会有工具警告。
例如:

在编程中将String类型的数据赋值给int类型的变量,这明显是语法错误,所有开发工具给出了警告。
在使用集成开发工具进行编程的过程中,语法错误基本不会发生。

1.2.逻辑错误

程序没有按照预期的方案执行。逻辑错误也称为小虫子(bugs)其查找和改正错误的过程称为调试(debugging)。处理方法一般为缩小范围法。
根据具体的业务场景来定位具体的业务组件,然后一步一步的进行断点调试,最后定位问题所在。
这类错误的发生条件基于没有语法错误的情况下,程序运行过程中出现了与预期结果不符的情况,这时这个情况的错误我们就称之为逻辑错误,这类错误是比较难处理的,它需要我们对业务有一定的熟悉度才能进行正确的解决。

例如:我们需要写一个程序用来两数之和,我们采用这种实现

public byte add(byte a,byte b){return (byte) (a+b);
}

刚开始,我们可能觉得没啥问题,但是,如果我们这样使用:

public static void main(String[] args) {LogicError logicError = new LogicError();byte b=100;byte c=100;System.out.println("100+100= "+logicError.add(b,c));
}

我们会发现,最后的结果和预期不一样:

这就是很明显的逻辑错误了,我们用byte数据类型计算超过其运算范围的加法,就会出现得到的结果和预期的不一致的情况。
这时候我们就可以修改程序来进行bug修复:

/*** 逻辑错误*/
public class LogicError {public int add(int a,int b){return a+b;}public static void main(String[] args) {LogicError logicError = new LogicError();byte b=100;byte c=100;System.out.println("100+100= "+logicError.add(b,c));}
}

1.3.运行错误

如果环境发现了一个不可能执行的错误,就会出现。其处理方法就是异常和断言。
这类错误就是,程序在运行中出现了错误导致程序异常中断,一般这样的错误最常见的是空指针异常,数据越界,错误类型转换等等。
例如:

/*** 运行错误*/
public class RunError {public int add(Integer a,Integer b){return a+b;}public static void main(String[] args) {RunError logicError = new RunError();System.out.println("100+100= "+logicError.add(null,100));}
}

2.异常处理和断言

2.1.try-catch语句处理异常

Java使用try-catch语句来处理运行错误,就是将可能出现异常的操作语句放在try部分,一旦try部分抛出异常(即在try里的某条语句发生了运行错误),那么try部分将立即结束,转向执行异常处理器catch部分处理错误,try-catch语句可以由几个catch组成,分别处理发送的相应异常,例如:

  try{包含的可能发送异常的语句}catch(ExceptionSubClass1 e){发生了ExceptionSubClass1异常后执行的语句....}catch(ExceptionSubClass2 e){发生了ExceptionSubClass2异常后执行的语句....}

举个例子:
假如你是一个中学生,你想要偷偷去网吧上网,但你又还怕被逮到,可是你又很聪明,你想到了几种办法来应对,方法一:当你被老师抓到时,你会乖乖向老师认错,并求他不要告诉你父母。方法二:当你被父母抓到,你会转头就跑回家,疯狂做家务。在这个例子中,你去上网这个过程中可能不会出错,一切平安,也可能会出现错误,你为了处理可能出现的错误,于是你想出了几个办法。try-catch就是用来装这些的:

 try{你去上网;}catch(被老师抓住){乖乖认错;}catch(被父母抓住){跑回家做家务;}

示例:

public class TryCatchStudy {public static void main(String[] args) {try{int i=0/0;}catch (Exception e){e.printStackTrace();System.out.println("发生了异常哦!!");}}
}

2.断言

在一个具有自我保护能力的程序中,断言非常常用。

2.1 断言的定义

Java中提供了一种机制,让我们能在程序开发阶段尽可能全面的测试程序的稳定性,同时能让我们在开发完成测试完成后不修改代码的基础上**“注释掉测试语句”**,从而不让测试语句影响程序运行效率。 这种机制,就是断言机制。断言机制相比于异常处理,它提供了更为高效的异常处理机制(使我们有选择性的忽略某些检查代码提高运行效率)

2.2 如何使用断言

断言使用assert关键字,assert使用有两种:

//condition是一个判断语句,如果判断语句是false,则会抛出AssertError异常
assert condition;
//其中condition是一个判断语句,如果判断语句是false,则会抛出AssertError异常且把message
//赋给AssertError构造方法进行打印。
assert condition:message;
public class TryCatchStudy {public static void main(String[] args) {//使用断言进行判断,如果不符合判断,则抛出异常AssertErrorassert args != null;int num = 30;try{int i=0/0;}catch (Exception e){e.printStackTrace();System.out.println("发生了异常哦!!");}//使用断言进行判断,如果不符合判断,则抛出异常,且把num的值传给AssertErrorassert num<0:num;}
}

Java基础学习/src/main/java/exa16 · 严家豆/Study - 码云 - 开源中国 (gitee.com)

16.程序设计的三大错误,异常类和断言相关推荐

  1. 设计自己的异常类——表示对负数求平方根的错误

    标题 设计自己的异常类表示对负数求平方根的错误:在类Test的主方法中,从键盘输入一个数,若输入的数不小于0,则输出它的平方根:若小于0,则抛出自定义异常:在程序中处理异常并输出提示信息"输 ...

  2. *1.设计一个异常类表示对负数求平方根的错误,在类Test的main方法中,* 从键盘中输入一个数字,若输入的数不小于0,则输出该数的平方根(用Math.sprt());* 若小于0,则抛出自定义

    /* *1.设计一个异常类表示对负数求平方根的错误,在类Test的main方法中, * 从键盘中输入一个数字,若输入的数不小于0,则输出该数的平方根(用Math.sprt()): * 若小于0,则抛出 ...

  3. 异常类练习——设计自己的异常类表示对负数求平方根的错误;

    设计自己的异常类表示对负数求平方根的错误: 在类Test的主方法中,从键盘输入一个数,若输入的数不小于0,则输出它的平方根: 若小于0,则抛出自定义异常:在程序中处理异常并输出提示信息"输入 ...

  4. 第二次预习——java异常类和常用类 容器

    文章目录 一.异常类 1.概念 2.异常类分类 2.1分类 2.2Error与Exception的区别 2.3Java中常见运行时异常 3.try-catch语句 3.1用法 3.2语句 3.3实例 ...

  5. 【Python面试】 列举Python中的标准异常类?

    往期面试题: 说说Python变量.函数.类的命名规则? 说说Python可变与不可变数据类型? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三 ...

  6. JAVA进阶开发之(异常类)

    保姆级别的异常类教学(附代码) 目录 1.什么是异常: 2. java语言中异常以什么形式存在的呢? 3.异常对应的现实生活中是怎样的? 4.异常处理机制 5.异常处理的具体方式 6.运行时异常编写程 ...

  7. php 错误 异常,php中的异常和错误解析

    PHP错误是属于php程序自身的问题,一般是由非法的语法,环境问题导致的,使得编译器无法通过检查甚至无法运行的情况.PHP异常一般是业务逻辑上出现的不合预期.与正常流程不同的状况,不是语法错误.本文介 ...

  8. Java异常类复习总结

    个人理解先行: 异常类是当在程序出现问题时抛出的一个警告.提示你程序设计或者代码有存在错误的地方. 异常类和Error都继承自Throwable, Throwable继承自Object类. Runti ...

  9. c++ 标准异常类层次结构_Java入门教程十一(异常处理)

    在程序设计和运行的过程中,发生错误是不可避免的.尽管 Java 语言的设计从根本上提供了便于写出整洁.安全代码的方法,并且程序员也尽量地减少错误的产生,但是使程序被迫停止的错误的存在仍然不可避免.为此 ...

最新文章

  1. linux PCB数组,Linux中的系统IO函数
  2. PHP实现简单顺序栈
  3. Python编程语言学习:判断变量是否为NONE或False的几种常见写法(if not用法教程)
  4. Oracle数据类型Long需要注意的问题
  5. 大厂测试开发常见面试题收集(python,java,性能等)
  6. Java黑皮书课后题第3章:*3.32(几何:点的位置)给定一个从点p0(x0,y0)到p1(x1,y1)的有向线段,可以用以下公式判定定点p2(x2, y2)是在线段的左侧、右侧,或者在该线段上
  7. VS VC 读取 INI文件
  8. cocos2d-x android 环境搭配,cocos2d-x Android环境配置问题和解决方法
  9. 设计模式-Builder和Factory模式区别
  10. java开发框架_Java-程序员感悟-开发人员喜欢的框架之Spring
  11. Java基础01 1个和2个区别比较
  12. 使用 ConnectionStringBuilder 对象创建精确连接字符串
  13. 【软件使用技巧】PL/SQL Developer实现双击table询
  14. IDL代码实现湖泊水体范围遥感提取
  15. k8s之常用操作命令
  16. 详说ArcGIS之重采样技术图文解析
  17. css特效之水滴效果
  18. Python小项目-烤地瓜
  19. mysql筛选两个不同表的数据
  20. 【Matlab】牛顿迭代法实现

热门文章

  1. Linux syscall Hook
  2. 基于JAVA番剧资讯检索系统计算机毕业设计源码+系统+lw文档+部署
  3. python改变图片的分辨率
  4. keepalived脑裂
  5. 霹雳吧啦Wz语义分割学习笔记P6
  6. 从字节码角度分析Byte类型变量b++和++b
  7. Android无障碍开发
  8. 逻辑思维不好能学java吗_没思维能力怎么学java?
  9. 基于JAVA游戏资讯网站计算机毕业设计源码+系统+数据库+lw文档+部署
  10. 贯彻学习大会文件精神主题知识竞赛