在不使用if-return或exception的情况下在submethod中打破main方法

时间:2017-05-05 04:33:18

标签: java exception methods return

我想知道是否有任何方法可以使用其子方法突破main方法,但不会抛出异常或返回布尔值。

例如

public void foo()
{
    System.out.print("Trying to break out foo");
    validate1();
    validate2();
    validate3();
    System.out.print("Validation success");
}

public void validate1()
{
    //todo: break out foo() if validation failed
}
public void validate2()
{
    //todo: break out foo() if validation failed
}
public void validate3()
{
    //todo: break out foo() if validation failed
}

foo()中没有if( validate1() ) return;

无需抛出 validate1() validate2() validate3()

这可能吗?

1 个答案:

答案 0 :(得分:-1)

没有这样的方法。您必须得到对您的调用方法的响应,然后中断调用方法。

from flask import Flask, jsonify
from flask.ext.mysqldb import MySQL

app = Flask(__name__)
app.config['MYSQL_HOST'] = '127.0.0.1'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'hello_db'
mysql = MySQL(app)

@app.route('/hello')
def index():
   cur = mysql.connection.cursor()
   cur.execute('''SELECT * FROM Users WHERE id=1''')
   rv = cur.fetchall()
   payload = []
   content = {}
   for result in rv:
       content = {'id': result[0], 'username': result[1], 'password': result[2]}
       payload.append(content)
       content = {}
   return jsonify(payload)

if __name__ == '__main__':
   app.run(debug=True)

但是,如果您希望程序结束,那么您只需执行

即可
public void foo()
{
    System.out.print("Trying to break out foo");
    if(!validate1()) {
        return;
    }
    if(!validate2()) {
        return;
    }
    ....
    System.out.print("Validation success");
}

public boolean validate1()
{
    try{
        ....
        if(...) {
        }
    } catch(Exception e) {
        //Don't throw exception. Instead just return false.
        return false;    
    }

    // no errors and validation passed
    return true;
}