0 0

为什么Java代码中必须try catch 或者throw异常,不然编译不通过5

C#
Python
里不需要强制必须处理异常
2013年12月07日 14:44

3个答案 按时间排序 按投票排序

0 0

核心原因:语言设计者觉得这样设计是最好的,O(∩_∩)O~

至于为什么python不是这么设计的,C#不是这么设计的,核心原因也是他们的语言设计者觉得不用catch异常是最好的,O(∩_∩)O~

那到底是显式去处理更好,还是不用显式去处理更好呢?
我来谈一下我的个人见解:

首先我们来定义什么叫异常,java中设计了两种类型的异常:checked exception和unchecked exception(即runtimeException),checked exception是需要显式捕获的,他向上层代码传递了一些信息,比如你校验用户登陆的时候,如果用户名在数据库中查不到,你可以抛出UserNotFoundException(定义为checked exception)来给上层代码传递这个User not found的信息,比如密码不对,可以创建一个PasswordErrorException。

再来说说RuntimeException,这种异常不需要显式捕获,比如IllegalArgumentException(参数不合法),DivideZeroException(除以0的异常),这种异常更像是一个错误的调用方法导致的,它在给上层代码传递的信息是:你用了一个很不对的方法在调用我,这是错误的,后果很严重哦,你如果没有防范措施(没有显式捕获),我可是会让终止这次方法调用链哦

对异常这个概念大家本身就没有一个统一的认识,比如python的设计者觉得:往上层代码传递信息根本不用checked exception,直接用多个方法返回值就可以了,所以他就只设计了第二种异常

不知道我说的你是否明白,呵呵,如果对你有帮助,把我选为最佳答案吧,码字不容易啊

2013年12月07日 21:21
0 0

这些需要捕获异常的都是可能出现意外的情况,需要程序来处理,比如用户提交数据,后台连接数据库失败,这时通过异常捕获就能反馈到用户界面。。反之没有异常捕获的话如何告诉用户操作不成功呢?

2013年12月07日 17:01
0 0

java的异常分为checked exception和unchecked exception,对于checked exception,java编译器要求必须捕获或者抛出这些异常。

2013年12月07日 14:53

相关推荐

    异常处理try catch在vc中的用法.zip visual c++ try catch处理异常

    在这个例子中,`try`块内的代码如果抛出了异常,程序会按照`catch`块的顺序查找匹配的异常类型。如果找到了匹配的类型,对应的`catch`块会被执行;如果没有找到,`...`通配符捕获器可以捕获所有未指定类型的异常。 ...

    java class反编译后的代码还原

    Java类反编译后的代码还原 Java类反编译后的代码还原是指将编译后的Java类文件(.class)转换回Java源代码的过程。在这个过程中,可能会出现一些不正常的代码,例如label0 :_L1 MISSING_BLOCK_LABEL_30、JVM INSTR ...

    JAVA范例 四)异常处理---编译时异常、运行时异常

    处理编译时异常通常有两种方式:使用try-catch语句块捕获并处理异常,或者使用throws关键字声明异常,将异常处理的责任交给调用该方法的代码。 接下来,我们讨论运行时异常(Runtime Exception)。运行时异常是程序...

    375.373.JAVA基础教程_异常处理-处理异常:try-catch方式(375).rar

    在这个“375.373.JAVA基础教程_异常处理-处理异常:try-catch方式(375)”的教程中,我们将深入探讨Java中的异常处理机制,特别是如何通过try-catch语句块来处理异常。 异常在Java中是一种对象,它是类`Exception`或...

    Java异常处理机制try catch流程详解

    Java 异常处理机制的核心是 try...catch 语句结构,通过 try 语句块中的代码可能会抛出异常,而 catch 语句块则负责捕获和处理这些异常。try 语句块中可以包含多个 catch 语句块,每个 catch 语句块可以捕获不同类型...

    try-catch用法

    2. **避免空 `catch` 块**:在 `catch` 块中至少应该记录或处理异常,避免仅仅为了编译而存在。 3. **资源清理**:如果 `try` 块中使用了需要关闭的资源(如文件流),应使用 `finally` 块确保资源得到正确的释放。 ...

    Java异常处理-throw手动抛出异常对象

    如果手动抛出的是编译时异常,即非运行时异常,需要在方法签名中使用throws声明,或者使用try...catch进行处理,否则编译不通过。 3. 如果手动抛出的是运行时异常,编译器不会强制要求处理,但最好还是能捕获并处理...

    java 异常处理 代码实例

    3. **finally块**:无论try-catch块中的代码是否抛出异常,finally块中的代码总会被执行。它通常用于释放资源,如关闭文件或网络连接。 4. **throw关键字**:用于手动抛出一个异常。当你知道某个条件不满足时,可以...

    第一行代码Java源代码第6章课程代码异常的捕获及处理

    "第一行代码Java源代码第6章"主要探讨的是如何在Java中捕获和处理异常,这是程序健壮性与稳定性的基石。 在Java中,异常是通过`Exception`类及其子类来表示的,这些异常可以分为检查型异常(Checked Exception)和...

    c++ 两个基本异常处理 源代码

    本资源包含的源代码着重展示了C++中的两种基本异常处理方式,即`try-catch`块的应用。下面将详细介绍这两种基本形式以及C++异常处理的相关知识点。 ### 1. 异常基础 异常是在程序执行过程中发生的非正常事件,可能...

    java异常处理

    异常处理机制在Java中被设计为一种结构化的方法,使得程序在遇到不可预见的问题时,能够中断当前的操作,转而执行特定的错误处理代码,而不是简单地崩溃。 1. 异常处理名词解释: - 异常(Exception):在Java中,...

    Java异常处理之try...catch...finally详解

    Java异常处理机制及实现方法主要依赖于try、catch、finally、throw和throws这五个关键字。Try关键字后跟一个花括号栝起的代码块(即使该代码块只有一行也不能省略花括号),简称try块。Catch对应异常类型和代码块,...

    java 异常处理练习

    在这个“java 异常处理练习”中,我们将深入探讨`try-catch-finally`、`throw`和`throws`关键字的使用,以及它们在确保程序稳定性和可靠性中的作用。 1. **try-catch-finally**:这是Java异常处理的核心构造,用于...

    java 异常详解,java异常分类,创建自己的异常

    Checked 异常必须在编译时捕捉并处理,而 unchecked 异常可以在编译时忽略,但是在运行时总是会被抛出。 在 Java 中,每个异常都是一个对象,它是 java.lang.Throwable 类或其子类的实例对象。Throwable 类有两个...

    java中的异常处理

    Java中的异常处理是编程过程中必不可少的一部分,它帮助开发者在程序执行期间捕获并处理错误,确保程序的稳定性和健壮性。Java通过一种结构化的方式来处理异常,这使得代码更易于理解和维护。以下是对异常处理的详细...

    Java异常处理体系

    Java异常处理的核心在于五个关键字:try、catch、finally、throw和throws。这些关键字帮助程序员构建了一个框架,当程序遇到预期或未预期的问题时,能够妥善地响应。 1. **try**:try块是异常处理的起点,它包含...

    有关java开发中对异常的处理知识

    在这个例子中,`throwException()`方法抛出了一个`RuntimeException`,而`tryCatch()`方法通过`try-catch`语句捕获了这个异常,并打印出“catch exception”。即使发生了异常,程序也会继续执行`catch`块之后的代码...

    java异常处理.ppt

    Java 异常处理 Java 异常处理是 Java 编程语言中的一种错误处理机制,它允许...Java 异常处理是 Java 编程语言中的一种错误处理机制,通过使用 try 块、catch 块和 finally 块,可以捕获和处理运行时的异常情况。

    C++ Java异常处理比较

    异常与异常处理器的绑定方面,Java采用的是显式捕获,即必须显式地使用`try-catch`块来指定可能抛出异常的代码段和对应的异常处理代码。而在C++中,可以使用`try`块,但异常处理器可以是显式的,也可以是隐式的(在...

Global site tag (gtag.js) - Google Analytics