`

返回false 还是抛出异常?

 
阅读更多
目前看来是抛出异常的方式在多条件的情况更好。不知道大家怎么看

public class A {
	
	public boolean get() {
		if(!method1()){
			return false;
		}
        if(!method2()){
    	  return false;
		}
       if(!method3()){
    	  return false;
		}
		return true;
	}
	
	
	public boolean get2() {
		try {
			method1();
			method2();
			method3();
		} catch (Exception e) {
			 return false;
		}
		return true;
	}
	
	public boolean method1(){
		return true;
	}
	
	public boolean method2(){
		return true;
	}
	
	public boolean method3(){
		return true;
	}
	

}

1
3
分享到:
评论
6 楼 liu346435400 2014-05-29  
赞成,一般我写代码在校验比较多的流程中会用自定义异常,这样捕获的时候可以区分业务异常和其他异常
5 楼 jinnianshilongnian 2013-07-11  
huangyunbin 写道
jinnianshilongnian 写道
我认为这个要根据实际情况

boolean类型只有两个状态,true/fasle,而且返回值表示结果;

比如用户登录的例子:不仅仅是成功/失败;可能还有锁定、密码尝试太多等等;这个时候应该使用异常来表示非正常流程;


你的意思是正常流程用boolean  非正常流程用抛异常。如果都统一用一种我觉得是不是对于代码逻辑更简单?

boolean代表状态;如文件api:isOpen()、exists()、canRead、canWrite等,如果在测试阶段出现了非预期的问题,应该抛出异常来解决。

比如User login(username, password) 登录成功应该返回登录的User,如果在登录过程中出问题了,非预期的,此时应该抛出异常来解决。
4 楼 huangyunbin 2013-07-11  
jinnianshilongnian 写道
我认为这个要根据实际情况

boolean类型只有两个状态,true/fasle,而且返回值表示结果;

比如用户登录的例子:不仅仅是成功/失败;可能还有锁定、密码尝试太多等等;这个时候应该使用异常来表示非正常流程;


你的意思是正常流程用boolean  非正常流程用抛异常。如果都统一用一种我觉得是不是对于代码逻辑更简单?
3 楼 jinnianshilongnian 2013-07-11  
我认为这个要根据实际情况

boolean类型只有两个状态,true/fasle,而且返回值表示结果;

比如用户登录的例子:不仅仅是成功/失败;可能还有锁定、密码尝试太多等等;这个时候应该使用异常来表示非正常流程;
2 楼 xiaokek 2013-07-11  
本人认为捕获异常更灵活,它不要求方法的返回值必须为boolean,而且异常也可以多种多样,不像boolean只有真和假。
1 楼 devilyard 2013-07-11  
赞同,false有时候会被遗忘,但异常就一定会被捕获

相关推荐

    java throw抛出异常实例一

    `throw`关键字是Java中用于显式抛出异常的关键字。本实例将深入探讨如何使用`throw`来创建和处理自定义异常,以及它在实际编程中的应用。 首先,我们了解异常的基本概念。在Java中,异常是程序执行过程中遇到的不...

    SafePHP重写一组核心PHP函数以抛出异常而不是在遇到错误时返回false

    "SafePHP"项目正是为了解决这个问题而提出的,它重写了PHP的一些核心函数,使得在遇到错误时不再返回`false`,而是抛出异常。这种做法有助于提高代码的可读性和可维护性,同时也使得开发者能够更快地定位并解决问题...

    aviator \断言函数,当 predicate 的结果为 false 的时候抛出 AssertFailed 异常, msg

    断言函数,当 predicate 的结果为 false 的时候抛出 AssertFailed 异常, msg 错误信息可选。 返回当前日期对象 java.util.Date 返回一个介于 [0, 1) 的随机数,结果为 double 类型 返回一个介于 [0, n) 的随机数,...

    浅谈python抛出异常、自定义异常, 传递异常

    ### Python异常处理详解:抛出异常、自定义异常与传递异常 #### 一、抛出异常 在Python中,异常是一种特殊的对象,用于表示程序执行过程中出现的问题或错误。当程序遇到异常时,如果不进行捕获和处理,则会导致...

    关于Java异常处理机制的深入理解.doc

    由于有`catch`块,异常被捕获并打印消息,同时返回值被设置为`false`,然后再次抛出异常。`finally`块则无论是否发生异常都会执行,打印返回值并返回。 接下来,异常从`testEx2()`传递到`testEx1()`的`catch`块,...

    C++箴言:防止异常离开析构函数

    1. **避免在析构函数中抛出异常**:尽可能地确保析构函数不会抛出异常。例如,可以在构造函数或成员函数中完成可能抛出异常的操作,而不是在析构函数中。 2. **使用智能指针**:通过使用智能指针(如 `std::unique_...

    [MySQL] 存储过程错误异常处理例子

    然后在后续的`IF`语句中检查这个标志,如果为`TRUE`,则执行错误处理(回滚事务并抛出自定义错误),否则正常提交事务。 通过这样的错误处理,我们可以更精细地控制存储过程的运行流程,提高程序的鲁棒性,并且可以...

    java throws声明异常实例二

    `try`块包含可能会抛出异常的代码,`catch`块用于捕获并处理异常,`finally`块则包含不论是否发生异常都需要执行的代码。`throw`关键字用于显式抛出一个异常,而`throws`则是声明方法可能会抛出的异常。 异常处理...

    java throws声明异常实例一

    `try`块包含可能会抛出异常的代码,`catch`块用于捕获并处理异常,而`finally`块则确保在任何情况下都会执行的代码,如关闭资源。 在实际编程中,合理地使用`throws`声明异常能够提高代码的可读性和维护性。当一个...

    java异常处理.doc

    理解Java异常处理机制的关键在于掌握异常的类型(如 `Exception` 和其子类)、如何抛出异常(`throw` 关键字)、如何声明可能会抛出异常的方法(`throws` 关键字),以及如何使用多个 `catch` 块来处理不同类型的...

    深入理解java异常处理机制

    1. **`testEx2`** 方法中的 `finally` 块被执行后,返回了一个布尔值 `false`,这导致了 `testEx1` 方法中的 `finally` 块也输出了 `false` 的返回值,而不是在 `catch` 块中抛出异常。 2. **`testEx1`** 方法中的 ...

    feign服务端发现异常客户端处理的方法介绍

    注意:虽然服务端方法返回为ResponseEntity,但出现4xx,5xx这些异常时,还是会抛出一个FeignException的异常,而这对于服务来说,向前端抛出的还是5xx的服务端异常,这不是我们希望看到的。 feign异常拦截器 feign...

    异常类的使用

    值得注意的是,这个方法声明了可能抛出`Exception`异常,这意味着实现该接口的类在重写此方法时也必须声明可能抛出异常或捕获异常。 #### 自定义异常类`NoStudentException` 为了实现当传入非`Student`类型的对象...

    java中optional妙用解决NullPointerException

    创建一个 Optional 实例,当 t为null时抛出异常(of 方法的值不能为空否则会抛出异常) Optional<String> optional1 = Optional.of("hello"); 判断 isPresent(): 判断optional是否为空,如果空则返回false,否则...

    用户自定义异常.rar

    在这个例子中,`pointcut`定义了一个切入点表达式,表示在`UserService`类中的所有方法抛出异常时执行通知。`throwing`参数指定了异常变量名,这样我们就可以在通知方法中访问到抛出的异常。 3. 配置AOP:在Spring...

    Android异常

    Checked异常是在编译时期就要求处理的异常,而Unchecked异常通常在运行时抛出,如空指针异常(NullPointerException)、数组越界异常(ArrayIndexOutOfBoundsException)等。 要在Android中实现全局异常捕获,我们...

    C#中int、Convert、Parse、TryParse的区别对比.docx

    最后,Convert.ToInt32 方法可以将 object 类型转换为 int 类型,但是需要注意,如果变量的值为 null 时,会传回 0,不会抛出异常。 C# 中 int、Convert、Parse、TryParse 的区别对比如下: * int 类型转换:可以...

    游标与异常处理代码

    用于重新抛出异常,或者抛出一个新的异常。例如,`RAISE_APPLICATION_ERROR(-20001, '自定义错误信息');` 4. **使用FOR UPDATE子句进行游标修改和删除** 当需要在游标遍历过程中更新或删除数据时,可以在`SELECT`...

    数据结构与算法(Python语言描述)课件栈和对列.ppt

    5. 查看栈顶元素(getTop):返回栈顶元素的值,如果栈为空,同样抛出异常。 栈有顺序栈和链式栈两种实现方式。顺序栈通常使用数组实现,当栈满或空时,需要考虑动态扩容或缩容。链式栈则使用链表,可以更灵活地...

    C++与操作系统等面试题47

    如果`releaseResource()`方法返回`false`并抛出异常,则`Example`对象的析构函数将被视为未完成。在这种情况下,如果没有捕获这个异常,程序将调用`std::terminate`函数来终止进程。 #### 总结 1. **构造函数中的...

Global site tag (gtag.js) - Google Analytics