Продолжить работу после ошибки / попытаться - поймать - PullRequest
0 голосов
/ 27 января 2020

У меня есть функция на сервере, которая иногда выдает ошибку и, похоже, обрабатывает sh сервер.

Блоки try-catch предотвращают полный сбой серверов / программы и продолжают обрабатывать? Этот код обрабатывает сетевые запросы, и мне нужно убедиться, что сервер не обрабатывает sh и не позволяет обрабатывать другие сетевые запросы к той же функции из-за ошибки, возникшей и сбой сервера.

Распространенная ошибка: java null pointer exception

РЕДАКТИРОВАТЬ добавлен пример псевдокода:

public class myClass{
    public static string networkHandler(string s) { //static method
         try {
           string ss = s;
         }
         catch(string s) {
           //handle error
         }
    }
}

Мне интересно, если это так, потому что мне нужно написать еще один блок catch для обработки указанного c типа ошибка, приводящая к сбою сервера.

Редактировать: Отвечая на вопрос @denis, мне стало интересно, есть ли способ получить блок catch типа NullPointerException

Ответы [ 4 ]

1 голос
/ 27 января 2020

В зависимости от вашей серверной среды и сред у вас должна быть глобальная стратегия обработки исключений. Локальные попытки выполнения могут предотвратить только сбои с указанными c исключениями в этом указанном c местоположении.

Кроме того, исключения с нулевым указанием являются признаками проблем с кодом и алгоритмами, поэтому лучше искать причину root и исправить это

1 голос
/ 27 января 2020

Если NullPointerException является вашим виновником, то поймайте исключение, подобное этому

    try {
       // code that throws null pointer excpetion that crashes the server
    }
    catch(NullPointerExcpetion npe) {
       //handle error
    }

Это должно предотвратить сбой сервера из этого указанного c исключения.

1 голос
/ 27 января 2020

Метод try catch позволяет вам перехватить ошибку (которая не даст вашей программе завершиться сбоем), и вы сможете обработать ошибку. Однако что-то вроде NullPointerException обычно указывает на ошибку в вашем коде.

Здесь есть дополнительная информация об обработке исключений: https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html

0 голосов
/ 27 января 2020

Итак, вы хотите использовать try-catch и неправильно используете его в своем псевдокоде.

try {
    string ss = s;
}catch(string s) {
     //handle error
}

вы передаете строку для перехвата, которая является неправильной. Вы должны передать исключение, которое вы хотите поймать. в этом случае NullPointerException, поэтому вы можете переписать его следующим образом:

try {
    string ss = s;
}catch(NullPointerException ex) {
     //handle error
}

вы можете прочитать эту ссылку для получения дополнительной информации о структуре try-catch-finally в java.

...