我在服务器中有一个函数,有时会引发错误并似乎使服务器崩溃。
try-catch
块是否可以防止服务器/程序完全崩溃并继续处理?此代码处理网络请求,我需要确保服务器不会崩溃,并防止由于发生错误并导致服务器崩溃而处理对同一功能的其他网络请求。
常见错误是java null pointer exception
编辑添加了示例伪代码:
public class myClass{
public static string networkHandler(string s) { //static method
try {
string ss = s;
}
catch(string s) {
//handle error
}
}
}
我想知道这是否是因为我需要编写另一个捕获块来处理使服务器崩溃的特定类型的错误。
编辑:正如@denis所回答的那样,我想知道是否有一个 wy 有一个类型的 NullPointerException 类型的捕获块
try catch 允许您捕获错误(这将阻止您的程序完全崩溃(,然后您可以处理该错误。但是,类似于 NullPointerException 之类的东西通常表示代码中存在错误。
此处提供了有关异常处理的更多信息:https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html
根据您的服务器环境和框架,您应该有一个全局异常处理策略。本地 try-catch 只能防止该特定位置上的特定异常崩溃。
此外,空点异常是代码和算法问题的迹象,因此最好寻找根本原因并修复它
如果 NullPointerException 是你的罪魁祸首,那么捕获这样的异常
try {
// code that throws null pointer excpetion that crashes the server
}
catch(NullPointerExcpetion npe) {
//handle error
}
它应该防止服务器因此特定异常而崩溃。
所以,你想使用try-catch
,但你在伪代码中用错了。
try {
string ss = s;
}catch(string s) {
//handle error
}
您正在传递一个字符串来捕获这是错误的。 您应该传递要捕获的异常。 在本例中NullPointerException
,因此您可以像 :
try {
string ss = s;
}catch(NullPointerException ex) {
//handle error
}
您可以阅读此链接以获取有关 Java 中 try-catch-finally 结构的更多信息。