我是Javascript的新手,我想连接到DB并运行一个脚本。然后得到脚本的结果,按顺序运行函数。如果其中一个函数有任何错误,它应该停止并且不运行其他函数。
我尝试了以下操作:
const {
Client
} = require('pg')
const client = new Client({
'connection info'
})
client.connect()
.then(() => console.log('DB connected'))
.catch(err => console.error('connection error', err.stack))
let dbResult
const data = async() => {
try {
dbResult = await client.query('SCRIPT') // array of json
} catch (error) {
console.log(error);
}
}
const func1 = async() => {
try {
// do something with dbResult
console.log('func1 success msg')
} catch (error) {
console.log('error in func1')
}
}
const func2 = async() => {
try {
// do something with dbResult
console.log('func2 success msg')
} catch (error) {
console.log('error in func2')
}
}
const func3 = async() => {
dbResult.forEach(result => {
// do something
})
try {
// do something with dbResult
console.log('func3 success msg')
} catch (error) {
console.log('error in func3')
}
}
data()
func1()
func2()
func3()
下面是如果你必须使用try catch在你的每个函数体里面。如果不是,那么我会坚持上面Jeremy的答案。
您可以做的是,不是控制台记录您在try.catch块中接收到的错误,而是抛出新的错误,这将停止代码的执行,并在控制台记录实际的错误。(不完全是控制台日志,而是console.error()it)
这将阻止其他函数的执行,除非您对您的错误做了一些事情(根据错误进行一些可以执行另一个代码的错误处理)。
通常,其语法如下所示:
try {
await someStuff();
} catch (err) {
throw new Error(err)
}
对象err
具有一些附加属性,例如name
和message
。下面是关于错误对象的更多信息。
您调用的所有函数都是async
,因此返回承诺,应该等待。您可以在try/catch块中等待所有这些代码,因此如果一个代码失败,其他代码将不会执行。
不要在每个函数中使用try/catch,而是在这里:
const data = async() => client.query('SCRIPT') // array of json
const func1 = async() => console.log('func1 success msg')
const func2 = async() => console.log('func2 success msg')
const func3 = async() => dbResult.forEach(result => console.log(result))
(async () => {
try{
let result = await data()
result = await func1(result)
await func2()
await func3(result)
} catch(err) {
console.log(err)
}
})();
Await Promission.ALL([data,func1,func2,func3])
如果其中一个承诺失败,也会失败,但不保证执行顺序。
//hwutil.showtoast(this,fragmentManager.getBackStackEntryCount()+“”);} 在所有其他片段中,我使用活动作为上下文,我的问题是,以这种方式访问上下文是不好的方式,还是会造成内存泄漏。或者任何其他访问上下文的方法..任何帮助都是有用的。
问题内容: 我想要一种一致且简单的方法来在JNI代码中引发异常;处理链式异常的东西(隐式地来自env-> ExceptionOccurred方法,或者由参数显式表示,无论哪种方式都不错),并且每次执行此操作时都无需查找构造函数。尽管我可以根据需要从C ++进行翻译,但上述所有内容最好都用C语言编写。 SO上是否有人可以分享这样的东西? 问题答案: 我们只是为要抛出的每种异常类型编写实用程序方法。这
问题内容: 我的网站最近遭到了一个无辜的代码的攻击: 那里没有SQL调用,因此我不担心SQL注入。但是,显然,SQL并不是唯一的注入方式。 该网站提供了解释以及避免代码注入的一些示例:http : //www.theserverpages.com/articles/webmasters/php/security/Code_Injection_Vulnerabilities_Explained.ht
问题内容: 我正在编写Android应用程序,此处的最佳方法通常可能与Java相同或不同。 我只是希望能够设置一个调试标志,该标志仅在设置为true时才执行代码的某些部分–等同于C ++设置预处理器#define DEBUG并使用#ifdef DEBUG。 在Java中是否有公认的或最佳的方法来完成此任务? 现在,我只是要在Application对象中设置一个变量,但是我不认为这是最好的方法。 问
问题内容: 我正在用Java编写Web服务,并且 试图找出定义错误代码及其相关错误字符串的最佳方法 。我需要将数字错误代码和错误字符串分组在一起。错误代码和错误字符串都将发送到访问Web服务的客户端。例如,当发生SQLException时,我可能要执行以下操作: 客户端程序可能会显示以下消息: “发生了错误#1:访问数据库时出现问题。” 我的第一个想法是使用一个错误代码并重写方法以返回错误字符串。
这里和是数据类型 我的错误从这一行开始:在这方面有人能帮助我吗 错误是“从lambda表达式引用的局部变量必须是final或有效的final”