Найдено результатов: 26

Необработанный обработчик исключений в .NET 1.1

Я поддерживаю приложение .NET 1.1, и одна из моих задач-убедиться, что пользователь не видит никаких недружественных уведомлений об ошибках.

Я добавил обработчики к Application.ThreadException и AppDomain.CurrentDomain.UnhandledException, которые действительно вызываются. Моя проблема заключается в том, что стандартный диалог ошибки CLR все еще отображается (до вызова обработчика исключений).

Джефф рассказывает об этой проблеме в своем блоге здесь и здесь . Но нет никакого решения. Итак, каков стандартный способ в .NET 1.1 обрабатывать необнаруженные исключения и отображать дружественное диалоговое окно?

Ответ Джеффа был отмечен как правильный ответ, потому что ссылка, которую он предоставил, содержит самую полную информацию о том, как сделать то, что требуется.

c#   .net   exception   exception-handling    

543   2   16:03, 1st July, 2020


Как исправить ошибку "Unprocessed view path found" с плагином ExceptionNotifier в rails 2.1?

После обновления веб-сайта rails 1.2 до 2.1 плагин ExceptionNotifier больше не работает, жалуясь на эту ошибку:

ActionView::TemplateFinder::InvalidViewPath: необработанный путь представления найдено: "/path/to/appname/vendor/plugins/exception_notification/lib/../views". Задайте пути просмотра с помощью #append_view_path, #prepend_view_path, или #view_paths=.

Что вызывает это и как я могу это исправить?

ruby-on-rails   ruby   exception   plugins    

482   2   16:03, 1st July, 2020


Обеспечение того, чтобы исключения всегда перехватывались

Исключения в C++ не должны быть пойманы (без ошибок времени компиляции) вызывающей функцией. Таким образом, это зависит от решения разработчика, следует ли ловить их с помощью try/catch (в отличие от Java).

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

c++   exception   try-catch    

512   7   16:03, 1st July, 2020


Уменьшение количества повторяющихся кодов обработки ошибок в C#?

Я никогда не был полностью доволен тем, как работает обработка исключений, есть много исключений и try / catch приносит в таблицу (размотка стека и т. д.), но, похоже, в этом процессе нарушается большая часть модели OO.

В любом случае, вот в чем проблема:

Допустим, у вас есть какой-то класс, который обертывает или включает сетевые операции с файлом IO (например, чтение и запись в какой-то файл по какому-то конкретному пути UNC). По разным причинам вы не хотите, чтобы эти операции IO завершились неудачей, поэтому, если вы обнаружите, что они завершились неудачей, вы повторяете их и продолжаете повторять, пока они не завершатся успешно или вы не достигнете тайм-аута. У меня уже есть удобный класс RetryTimer, который я могу создать и использовать, чтобы перевести текущий поток в спящий режим между повторными попытками и определить, когда истек период ожидания и т. д.

Проблема в том, что у вас есть куча операций IO в нескольких методах этого класса, и вам нужно обернуть каждую из них в логику try-catch / retry.

Вот пример фрагмента кода:

RetryTimer fileIORetryTimer = new RetryTimer(TimeSpan.FromHours(10));
bool success = false;
while (!success)
{
    try
    {
        // do some file IO which may succeed or fail
        success = true;
    }
    catch (IOException e)
    {
        if (fileIORetryTimer.HasExceededRetryTimeout)
        {
            throw e;
        }
        fileIORetryTimer.SleepUntilNextRetry();
    }
}

Итак, как избежать дублирования большей части этого кода для каждой операции file IO в классе? Мое решение состояло в использовании анонимных блоков делегатов и единственного метода в классе, который выполнял переданный ему блок делегатов. Это позволило мне делать подобные вещи другими методами:

this.RetryFileIO( delegate()
    {
        // some code block
    } );

Мне это несколько нравится, но оставляет желать лучшего. Я бы хотел услышать, как другие люди решают подобные проблемы.

c#   exception   error-handling    

529   4   16:03, 1st July, 2020


Почему я не могу использовать блок try вокруг моего вызова super()?

Итак, в Java первая строка вашего конструктора HAS должна быть вызовом super... будь то неявный вызов super() или явный вызов другого конструктора. Вот что я хочу знать: почему я не могу поставить пробный блок вокруг этого?

Мой конкретный случай заключается в том, что у меня есть макет класса для теста. Конструктора по умолчанию нет, но я хочу, чтобы он упрощал чтение тестов. Я также хочу обернуть исключения, вызванные из конструктора, в RuntimeException.

Итак, то, что я хочу сделать, это эффективно:

public class MyClassMock extends MyClass {
    public MyClassMock() {
        try {
            super(0);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    // Mocked methods
}

Но Java жалуется, что супер-это не первое утверждение.

Мой обходной путь:

public class MyClassMock extends MyClass {
    public static MyClassMock construct() {
        try {
            return new MyClassMock();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    public MyClassMock() throws Exception {
        super(0);
    }

    // Mocked methods
}

Является ли это лучшим обходным путем? Почему Java не позволяет мне сделать первое?


Моя лучшая догадка относительно "why" заключается в том, что Java не хочет, чтобы я имел сконструированный объект в потенциально противоречивом состоянии... однако, делая глумление, я не забочусь об этом. Кажется, я должен быть в состоянии сделать это выше... или, по крайней мере, я знаю, что вышесказанное безопасно для моего случая... или кажется, что так и должно быть в любом случае.

Я переопределяю все методы, которые я использую из тестируемого класса, поэтому нет никакого риска, что я использую неинициализированные переменные.

java   exception   mocking   try-catch    

505   7   16:03, 1st July, 2020


Почему плохой пароль вызывает "заполнение недопустимо и не может быть удалено"?

Мне нужно было какое-то простое строковое шифрование, поэтому я написал следующий код (с большим количеством "inspiration" отсюда ):

    // create and initialize a crypto algorithm
    private static SymmetricAlgorithm getAlgorithm(string password) {
        SymmetricAlgorithm algorithm = Rijndael.Create();
        Rfc2898DeriveBytes rdb = new Rfc2898DeriveBytes(
            password, new byte[] {
            0x53,0x6f,0x64,0x69,0x75,0x6d,0x20,             // salty goodness
            0x43,0x68,0x6c,0x6f,0x72,0x69,0x64,0x65
        }
        );
        algorithm.Padding = PaddingMode.ISO10126;
        algorithm.Key = rdb.GetBytes(32);
        algorithm.IV = rdb.GetBytes(16);
        return algorithm;
    }

    /* 
     * encryptString
     * provides simple encryption of a string, with a given password
     */
    public static string encryptString(string clearText, string password) {
        SymmetricAlgorithm algorithm = getAlgorithm(password);
        byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, algorithm.CreateEncryptor(), CryptoStreamMode.Write);
        cs.Write(clearBytes, 0, clearBytes.Length);
        cs.Close();
        return Convert.ToBase64String(ms.ToArray());
    }

    /*
     * decryptString
     * provides simple decryption of a string, with a given password
     */
    public static string decryptString(string cipherText, string password) {
        SymmetricAlgorithm algorithm = getAlgorithm(password);
        byte[] cipherBytes = Convert.FromBase64String(cipherText);
        MemoryStream ms = new MemoryStream();
        CryptoStream cs = new CryptoStream(ms, algorithm.CreateDecryptor(), CryptoStreamMode.Write);
        cs.Write(cipherBytes, 0, cipherBytes.Length);
        cs.Close();            
        return System.Text.Encoding.Unicode.GetString(ms.ToArray());
    }

Код, похоже, работает нормально, за исключением того, что при расшифровке данных с неверным ключом я получаю CryptographicException - "Padding is invalid and cannot be removed" - на строке cs.Close() в decryptString.

пример кода:

    string password1 = "password";
    string password2 = "letmein";
    string startClearText = "The quick brown fox jumps over the lazy dog";
    string cipherText = encryptString(startClearText, password1);
    string endClearText = decryptString(cipherText, password2);     // exception thrown

Мой вопрос в том, можно ли этого ожидать? Я бы подумал, что расшифровка с неверным паролем просто приведет к бессмысленному выходу, а не к исключению.

c#   .net   exception   encryption    

652   9   10:32, 7th August, 2020


A ThreadStateException возникает при попытке перезапустить поток

Время от времени я получаю System.Threading.ThreadStateException при попытке перезапустить поток. Рассматриваемый код выглядит следующим образом:

// Make sure the thread is done stopping
while (this.mThread.ThreadState == ThreadState.Running)
{ 
    Thread.Sleep(0);
}
// Respawn a thread if the current one is stopped or doesn't exist
if (this.mThread == null || this.mThread.ThreadState == ThreadState.Stopped)
{ 
    this.mThread = new Thread(new ParameterizedThreadStart(Monitor)); }
// Start the thread
if (check)
{ 
    this.mThread.Start(60000); 
}
else
{   
    this.mThread.Start(0); 
}

Итак, два вопроса - Является ли это правильным способом делать вещи, и есть ли способ предотвратить возникновение ошибки?

c#   .net   multithreading   exception    

437   3   15:23, 25th August, 2020


A ThreadStateException возникает при попытке перезапустить поток

Время от времени я получаю System.Threading.ThreadStateException при попытке перезапустить поток. Рассматриваемый код выглядит следующим образом:

// Make sure the thread is done stopping
while (this.mThread.ThreadState == ThreadState.Running)
{ 
    Thread.Sleep(0);
}
// Respawn a thread if the current one is stopped or doesn't exist
if (this.mThread == null || this.mThread.ThreadState == ThreadState.Stopped)
{ 
    this.mThread = new Thread(new ParameterizedThreadStart(Monitor)); }
// Start the thread
if (check)
{ 
    this.mThread.Start(60000); 
}
else
{   
    this.mThread.Start(0); 
}

Итак, два вопроса - Является ли это правильным способом делать вещи, и есть ли способ предотвратить возникновение ошибки?

c#   .net   multithreading   exception    

521   3   10:47, 3rd August, 2020


Запретить проглатывание исключений элементом управления WebBrowser

Я использую System.Windows.Forms.WebBrowser, чтобы сделать представление a-la начальной страницы Visual Studio. Однако, похоже, что элемент управления ловит и обрабатывает все исключения, молча погружая их! Не нужно говорить, что это очень неудачное поведение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    throw new Exception("OMG!");
}

Приведенный выше код отменит навигацию и проглотит исключение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    try
    {
        e.Cancel = true;
        if (actions.ContainsKey(e.Url.ToString()))
        {
            actions[e.Url.ToString()].Invoke(e.Url, webBrowser.Document);
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.ToString());
    }
}

Итак, то, что я делаю (выше), - это поймать все исключения и открыть окно, это лучше, чем молча терпеть неудачу, но все же явно далек от идеала. Я бы хотел, чтобы он перенаправлял исключение через обычный путь сбоя приложения, чтобы оно в конечном итоге становилось необработанным или обрабатывалось приложением из корня.

Есть ли способ сказать элементу управления WebBrowser , чтобы остановить потопление исключений и просто переслать их естественным и ожидаемым способом? Или есть какой-то хакерский способ бросить исключение через родные границы?

.net   winforms   exception-handling   webbrowser-control    

432   2   04:48, 2nd August, 2020


Как я могу перенаправить пользователя на настраиваемую страницу 404 в ASP.NET MVC вместо того, чтобы бросать исключение?

Я хочу иметь возможность захватить исключение, которое возникает, когда пользователь запрашивает несуществующий контроллер, и перенаправить его на страницу 404. Как я могу это сделать?

Например, пользователь запрашивает http://www.nosite.com/paeges/1 ( должно быть /pages/). Как мне сделать так, чтобы они были перенаправлены на экран 404, а не на экран исключений?

asp.net-mvc   exception   routes    

478   3   02:28, 27th August, 2020


Запретить проглатывание исключений элементом управления WebBrowser

Я использую System.Windows.Forms.WebBrowser, чтобы сделать представление a-la начальной страницы Visual Studio. Однако, похоже, что элемент управления ловит и обрабатывает все исключения, молча погружая их! Не нужно говорить, что это очень неудачное поведение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    throw new Exception("OMG!");
}

Приведенный выше код отменит навигацию и проглотит исключение.

void webBrowserNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
    // WebBrowser.Navigating event handler
    try
    {
        e.Cancel = true;
        if (actions.ContainsKey(e.Url.ToString()))
        {
            actions[e.Url.ToString()].Invoke(e.Url, webBrowser.Document);
        }
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.ToString());
    }
}

Итак, то, что я делаю (выше), - это поймать все исключения и открыть окно, это лучше, чем молча терпеть неудачу, но все же явно далек от идеала. Я бы хотел, чтобы он перенаправлял исключение через обычный путь сбоя приложения, чтобы оно в конечном итоге становилось необработанным или обрабатывалось приложением из корня.

Есть ли способ сказать элементу управления WebBrowser , чтобы остановить потопление исключений и просто переслать их естественным и ожидаемым способом? Или есть какой-то хакерский способ бросить исключение через родные границы?

.net   winforms   exception-handling   webbrowser-control    

410   2   20:05, 14th August, 2020


Как я могу регистрировать необнаруженные исключения в PHP?

Я выяснил, как преобразовать ошибки в исключения, и я хорошо отображаю их, если они не пойманы, но я не знаю, как их правильно регистрировать. Просто записать их в файл не будет полезно, не так ли? И вы бы рискнули получить доступ к базе данных, когда вы еще не знаете, что вызвало исключение?

php   exception   error-handling   error-logging    

1553   7   04:29, 8th August, 2020


Пишете ли вы исключения для конкретных вопросов или общие исключения?

У меня есть код, который дает идентификатор пользователя утилите, которая затем отправляет email этому пользователю.

emailUtil.sendEmail(userId, "foo");

public void sendEmail(String userId, String message) throws MailException {
    /* ... logic that could throw a MailException */
}

MailException может быть брошен по ряду причин, проблем с адресом email, проблем с шаблоном почты и т.д.

Мой вопрос заключается в следующем: вы создаете новый тип исключения для каждого из этих исключений, а затем обрабатываете их по отдельности или создаете один MailException, а затем сохраняете что-то в исключении (что-то машиночитаемое, а не текст описания), что позволяет нам делать разные вещи на основе того, что на самом деле произошло.

Edit: как уточнение, исключения не предназначены для журналов, а что-нет, это относится к тому, как код реагирует на них. Чтобы продолжить работу с примером mail, предположим, что когда мы отправляем почту, она может потерпеть неудачу, потому что у вас нет адреса email, или потому что у вас нет действительного адреса email, или она может потерпеть неудачу.. и т.д.

Мой код хотел бы реагировать по-разному на каждую из этих проблем (в основном путем изменения сообщения, возвращенного клиенту, но и фактической логики).

Было бы лучше иметь реализацию исключения для каждой из этих проблем или одно зонтичное исключение, которое имело бы что-то внутреннее (например, перечисление), что позволило бы коду различать, какая проблема была.

c#   java   exception    

396   11   21:06, 1st October, 2020


Как вы передаете сообщения/ошибки уровня обслуживания на более высокие уровни с помощью MVP?

В настоящее время я пишу приложение ASP.Net от UI вниз. Я внедряю архитектуру MVP, потому что я устал от Winforms и хотел чего-то, что имело лучшее разделение проблем.

Таким образом, с MVP презентатор обрабатывает события, вызванные представлением. Вот некоторый код, который у меня есть, чтобы иметь дело с созданием пользователей:

public class CreateMemberPresenter
{
    private ICreateMemberView view;
    private IMemberTasks tasks;

    public CreateMemberPresenter(ICreateMemberView view) 
        : this(view, new StubMemberTasks())
    {
    }

    public CreateMemberPresenter(ICreateMemberView view, IMemberTasks tasks)
    {
        this.view = view;
        this.tasks = tasks;

        HookupEventHandlersTo(view);
    }

    private void HookupEventHandlersTo(ICreateMemberView view)
    {
        view.CreateMember += delegate { CreateMember(); };
    }

    private void CreateMember()
    {
        if (!view.IsValid)
            return;

        try
        {
            int newUserId;
            tasks.CreateMember(view.NewMember, out newUserId);
            view.NewUserCode = newUserId;
            view.Notify(new NotificationDTO() { Type = NotificationType.Success });
        }
        catch(Exception e)
        {
            this.LogA().Message(string.Format("Error Creating User: {0}", e.Message));
            view.Notify(new NotificationDTO() { Type = NotificationType.Failure, Message = "There was an error creating a new member" });
        }
    }
}

У меня есть моя основная проверка формы, выполненная с использованием встроенных элементов управления проверкой .Net, но теперь мне нужно проверить, что данные достаточно удовлетворяют критериям для уровня сервиса.

Допустим, могут отображаться следующие сообщения уровня сервиса:

  • Учетная запись электронной почты уже существует (сбой)
  • Ссылка на введенного пользователя не существует (сбой)
  • Длина пароля превышает допустимую длину хранилища данных (сбой)
  • Участник создан успешно (success)

Предположим также, что на уровне сервиса будет больше правил, которые UI не может предвидеть.

В настоящее время у меня есть уровень сервиса, который бросает исключение, если все пошло не так, как планировалось. Это достаточная стратегия? Этот код пахнет для вас, ребята? Если бы я написал такой уровень сервиса, вы были бы раздражены необходимостью писать докладчиков, которые используют его таким образом? Коды возврата кажутся слишком старой школой, и bool просто недостаточно информативен.


Редактировать не по OP: слияние в последующих комментариях, которые были опубликованы в качестве ответов OP


Cheekysoft, мне нравится концепция a ServiceLayerException. У меня уже есть глобальный модуль исключений для исключений, которые я не ожидаю. Считаете ли вы, что все эти пользовательские исключения утомительны? Я думал, что ловить базовый класс исключений было немного вонючим, но не был точно уверен, как продвигаться оттуда.

tgmdbm, мне нравится умное использование выражения lambda там!


Спасибо Cheekysoft за последующие действия. Поэтому я предполагаю, что это будет стратегия, если вы не возражаете, чтобы пользователь отображал отдельную страницу (Я в первую очередь веб-разработчик), если исключение не обрабатывается.

Однако, если я хочу вернуть сообщение об ошибке в том же представлении, где пользователь представил данные, вызвавшие ошибку, мне придется поймать исключение в Презентаторе?

Вот как выглядит CreateUserView, когда ведущий обработал ServiceLayerException:

Create a user

Для такого рода ошибок, это хорошо, чтобы сообщить об этом в том же представлении.

В любом случае, я думаю, что сейчас мы выходим за рамки моего первоначального вопроса. Я поиграю с тем, что вы опубликовали, и если мне понадобится дополнительная информация, я отправлю новый вопрос.

c#   asp.net   exception   mvp   n-tier-architecture    

524   3   08:19, 15th August, 2020


Неужели так уж плохо поймать общее исключение?

Анализируя некоторый устаревший код с FXCop, мне пришло в голову, действительно ли так плохо поймать общую ошибку исключения в блоке try или вы должны искать конкретное исключение. Мысли на открытке, пожалуйста.

exception    

345   15   00:24, 9th August, 2020


Рекомендации по отлову и повторному выбрасыванию исключений .NET

Какие рекомендации следует учитывать при перехвате исключений и повторном их отбрасывании? Я хочу убедиться, что InnerException объекта Exception и стек trace сохранены. Есть ли разница между следующими блоками кода в том, как они обрабатывают это?

try
{
    //some code
}
catch (Exception ex)
{
    throw ex;
}

Против:

try
{
    //some code
}
catch
{
    throw;
}

c#   .net   exception-handling   rethrow    

430   11   12:46, 16th August, 2020


Настроить сокет Java на fail-fast при отключении?

У меня есть порт прослушивания на моем сервере, к которому я подключаюсь с помощью класса Java и интерфейса Socket , i.e.

Socket mySocket = new Socket(host,port);

Затем я хватаю OutputStream, украшаю PrintWriter в режиме автозапуска, и я смеюсь - за исключением того, что порт прослушивания закрывается. Тогда я получаю

tcp4       0      0  *.9999                 *.*                    LISTEN
tcp        0      0  127.0.0.1.45737        127.0.0.1.9999         CLOSE_WAIT

и я не могу обнаружить проблему в программе - я попытался использовать метод isConnected() на сокете, но он, похоже, не знает, что соединение закрыто.

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

Какие-нибудь советы, пожалуйста?

Спасибо всем

java   exception   sockets   networking    

452   3   01:10, 14th August, 2020


Выгодно ли вообще использовать 'goto' в языке, поддерживающем циклы и функции? Если да, то почему?

У меня уже давно сложилось впечатление, что goto никогда не следует использовать, если это возможно. Просматривая libavcodec (который написан в C) на днях, я заметил, что он используется многократно. Выгодно ли вообще использовать goto в языке, поддерживающем циклы и функции? Если да, то почему?

c   exception-handling   language-agnostic   goto    

508   24   04:33, 26th August, 2020


Обработка исключений: контракт против исключительного подхода

Я знаю два подхода к обработке исключений, давайте посмотрим на них.

  1. Контрактный подход.

    Когда метод не делает то, что он говорит, что он будет делать в заголовке метода, он будет вызывать исключение. Таким образом, метод "promises", что он будет выполнять операцию, и если он не работает по какой-то причине, он будет выдавать исключение.

  2. Исключительный подход.

    Только бросать исключения, когда что-то действительно странное происходит. Вы не должны использовать исключения, когда вы можете разрешить ситуацию с обычным потоком управления (если операторы). Вы не используете исключения для потока управления, как в контрактном подходе.

Позволяет использовать оба подхода в разных случаях:

У нас есть класс Customer, который имеет метод под названием OrderProduct.

контрактный подход:

class Customer
{
     public void OrderProduct(Product product)
     {
           if((m_credit - product.Price) < 0)
                  throw new NoCreditException("Not enough credit!");
           // do stuff 
     }
}

исключительный подход:

class Customer
{
     public bool OrderProduct(Product product)
     {
          if((m_credit - product.Price) < 0)
                   return false;
          // do stuff
          return true;
     }
}

if !(customer.OrderProduct(product))
            Console.WriteLine("Not enough credit!");
else
   // go on with your life

Здесь я предпочитаю исключительный подход, так как это не является действительно исключительным, что у клиента нет денег, если он не выиграл в лотерею.

Но вот ситуация, в которой я ошибаюсь в стиле контракта.

Исключительный:

class CarController
{
     // returns null if car creation failed.
     public Car CreateCar(string model)
     {
         // something went wrong, wrong model
         return null;
     }
 }

Когда я вызываю метод с именем CreateCar, я чертовски хорошо ожидаю экземпляр Car вместо какого-то паршивого указателя null, который может разрушить мой рабочий код через дюжину строк. Поэтому я предпочитаю контракт этому:

class CarController
{

     public Car CreateCar(string model)
     {
         // something went wrong, wrong model
         throw new CarModelNotKnownException("Model unkown");

         return new Car();
     }
 }

Какой стиль вы используете? Как вы думаете, каков наилучший общий подход к исключениям?

exception    

414   5   18:27, 17th August, 2020


java.lang.IllegalArgumentException: недопустимый в сопоставлении сервлетов

<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>workflow.WDispatcher</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*NEXTEVENT*</url-pattern>
</servlet-mapping>

Выше приведен фрагмент из Tomcat web.xml . Паттерн URL *NEXTEVENT* при запуске выбрасывает

java.lang.IllegalArgumentException: недопустимый <url-pattern> в сопоставлении сервлетов

Мы будем очень признательны, если кто-то сможет намекнуть на ошибку.

tomcat   servlets   web.xml   illegalargumentexception   servlet-mapping    

415   2   04:15, 13th August, 2020


Каково общее правило больших пальцев для создания исключения в Java?

Я был в обеих ситуациях:

  • Создание слишком большого количества пользовательских исключений
  • Использование слишком большого количества общих классов исключений

В обоих случаях проект стартовал OK, но вскоре стал накладными расходами на обслуживание (и рефактор).

Итак, какова наилучшая практика создания собственных классов исключений?

java   exception    

445   8   21:37, 11th August, 2020


Когда выбрать проверенные и непроверенные исключения

В Java (или любом другом языке с проверяемыми исключениями), создавая свой собственный класс исключений, как вы решаете, следует ли его проверять или нет?

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

java   exception   checked-exceptions    

420   18   23:05, 22nd August, 2020


Инструмент анализа исключений для C++

Я искал инструмент для извлечения информации об исключениях из программы C++. Самая разыскиваемая функция, которую я ищу: я хочу знать все исключения, которые могут быть брошены из функции (которая будет включать в себя всю функцию, которая вызывается из этой функции рекурсивно).

Я всегда думал, что документирование ошибок и исключений, в частности, очень сложно (и требует много усилий, чтобы идти в ногу со временем). Но если есть какой-то способ автоматизировать это, это было бы очень полезно.

Инструмент для windows и Visual Studio был бы предпочтительным, но не необходимым,я всегда мог бы обойти это.

c++   exception   code-analysis    

424   5   17:55, 2nd August, 2020


Почему трассировки стека исключений всегда указывают на последнюю строку метода?

У меня проблема с установкой Visual Studio. Когда я получаю исключение, у меня всегда есть неправильные номера строк в стеке trace. В моей кодовой базе всегда есть точка до последней строки каждого метода. В то же время это OK, когда я отслеживаю программы с отладчиком. Что случилось с PDBs?

Нет, я не повторяю исключение для каждого метода.

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

c#   .net   visual-studio   exception   stack-trace    

446   1   14:55, 14th August, 2020


Windows Vista: не удается загрузить DLL 'x.dll': недопустимый доступ к памяти. (DllNotFoundException)

Сегодня днем я тестировал на коробке клиента, которая имеет Windows Vista (у него был дом, но я тестирую на бизнес-издании с теми же результатами).

Мы используем .DLL, который получает аппаратное обеспечение ID компьютера. Его использование очень просто, и образец программы, которую я создал, работает. Dll - это от AzSdk . На самом деле, это прекрасно работает под Windows XP. Однако, по какой-то странной причине, внутри нашего проекта (намного больше) мы получаем это исключение:

Exception Type:        System.DllNotFoundException
Exception Message:     Unable to load DLL 'HardwareID.dll': Invalid access to memory location. (Exception from HRESULT: 0x800703E6)
Exception Target Site: GetHardwareID

Я не знаю, что может быть причиной проблемы, так как у меня есть полный контроль над папкой. Проект представляет собой приложение форм c#.net Windows, и все работает нормально, за исключением вызова внешней библиотеки.

Я объявляю его следующим образом: (Примечание: это не библиотека COM, и ее не нужно регистрировать).

[DllImport("HardwareID.dll")]
public static extern String GetHardwareID(bool HDD,
   bool NIC, bool CPU, bool BIOS, string sRegistrationCode);

И тогда вызывающий код достаточно прост:

private void button1_Click(object sender, EventArgs e)
{
    textBox1.Text = GetHardwareID(cb_HDD.Checked, 
                                  cb_NIC.Checked, 
                                  cb_CPU.Checked, 
                                  cb_BIOS.Checked, 
                                 "*Registration Code*");
}

Когда вы создаете пример приложения, он работает, но внутри моего проекта он не работает. Under XP работает нормально. Есть ли идеи о том, что я должен сделать в Vista, чтобы сделать эту работу? Как я уже сказал, папка и ее подпапки имеют полный контроль над "Everybody".

UPDATE: у меня не установлена Vista SP 1.

UPDATE 2: я установил Vista SP1 и теперь, когда UAC отключен, даже простой пример не работает!!! : (Чертова Виста.

c#   .net   windows-vista   dllnotfoundexception    

604   6   23:18, 10th August, 2020


прокидывать exception в блоках try-catch JAVA

я новичок. дали первую таску, одну часть выполнила, на второй встряла. подскажите пожалуйста что конкретно делать тут
"...в сервисных классах кафки нужно прокидывать exception в блоках try-catch, где вызывается log.error(). Нужно будет написать новые эксепшены нашего сервиса и прокидывать их"

мои сервисы
 

@Slf4j
@Component
@RequiredArgsConstructor
public class KafkaListenersService {

    private final KafkaSenderService kafkaSender;
    @Value(value = "${kafka-topics.platform-direction-create}")
    private String platformDirectionCreate;
    @Value(value = "${kafka-topics.platform-direction-update}")
    private String platformDirectionUpdate;
    @Value(value = "${kafka-topics.platform-direction-delete}")
    private String platformDirectionDelete;
    private final ObjectMapper objectMapper;

    @KafkaListener(topics = "${kafka-topics.adapter-direction-create}")
    public void listenerAdapterDirectionCreate(ConsumerRecord<String, JsonNode> myRecord){
        log.info("Get message in topic adapter-direction-create, key {} value {}", myRecord.key(), myRecord.value());

        DirectionRequest directionRequest = null;

        try {
            directionRequest = objectMapper.treeToValue(myRecord.value(), DirectionRequest.class);
        } catch (JsonProcessingException e) {
            log.error("Error reading message: {}", e.getMessage());
        }
        log.info("Created request to create direction: " + directionRequest.getName());

        kafkaSender.sendMessage(platformDirectionCreate, "Create direction", myRecord.value());
    }

    @KafkaListener(topics = "${kafka-topics.adapter-direction-update}")
    public void listenerAdapterDirectionUpdate(ConsumerRecord<String, JsonNode> myRecord){
        log.info("Get message in topic adapter-direction-update, key {} value {}", myRecord.key(), myRecord.value());

        DirectionRequest directionRequest = null;

        try {
            directionRequest = objectMapper.treeToValue(myRecord.value(), DirectionRequest.class);
        } catch (JsonProcessingException e) {
            log.error("Error reading message: {}", e.getMessage());
        }
        log.info("Created request to update direction: " + directionRequest.getName());

        kafkaSender.sendMessage(platformDirectionUpdate, "Update direction", myRecord.value());
    }

    @KafkaListener(topics = "${kafka-topics.adapter-direction-delete}")
    public void listenerAdapterDirectionDelete(ConsumerRecord<String, JsonNode> myRecord){
        log.info("Get message in topic adapter-direction-delete, key {} value {}", myRecord.key(), myRecord.value());

        String id = null;

        try {
            id = objectMapper.treeToValue(myRecord.value(), String.class);
        } catch (JsonProcessingException e) {
            log.error("Error reading message: {}", e.getMessage());
        }
        log.info("Created request to delete direction with id: " + id);

        kafkaSender.sendMessage(platformDirectionDelete, "Delete direction", myRecord.value());
    }
}

----------------------------------------------------------------------------------------------------

@Slf4j
@Service
@RequiredArgsConstructor
public class KafkaSenderService {

    private final KafkaTemplate<String, Object> kafkaTemplate;
    @Value(value = "${acks-timeout-mseconds}")
    private Integer acksTimeoutMseconds;

    public void sendMessage(String topic, String key, Object msg) {
        try {
            kafkaTemplate.send(topic, key, msg).get(acksTimeoutMseconds, TimeUnit.MILLISECONDS);
        } catch (ExecutionException | InterruptedException | TimeoutException e) {
            log.error("Message timeout may not be connected to Kafka! {} , stackTrace {}", e, Arrays.toString(e.getStackTrace()));
        }
        log.info("Sending via Kafka to a topic: {} massage: {}", topic, msg);
    }
}

exception   java   trycatch   кафка  

4380   0   21:11, 11th March, 2023