У меня есть функция, которая выглядит так:
try
{
_dbManager.InsertSearch(some data);
}
catch (Exception ex)
{
//do logging
}
_ dbManager
использует LINQ для вставки данных в базу данных SQL. Вчера на машине, на которой размещена база данных, не хватило места на жестком диске, и произошел сбой программы. Я получил аварийный дамп, который показывает, что возник SqlClient.SqlException
с сообщением об исключении, считывающим что-то вроде «регистрации транзакции базы данных заполнен»....
Мой вопрос: Почему исключение не попало в ловушку выше? Странно то, что когда я пытался воспроизвести проблему, я мог получить то же исключение, но его поймал блок улова. Какой может быть проблема?
Второй, связанный вопрос: Представьте, если мы используем стороннюю библиотеку и мы не хотим никаких исключений. Мы можем использовать блок try-catch, но это работает только на вызывающем потоке. Что делать, если третья сторона запускает новый поток и там выбрасывается исключение? Есть ли способ справиться с этим? Я знаю, что могу зарегистрировать наш UnhandledExcepureHandler
, но это, кажется, отличается от того, что я хотел.
У меня есть текстовый файл с некоторым образцом содержимого, как показано здесь:
Sno = 1p
Sno = 2p
Sno = 3p
Я хочу удалить p
из каждого из столбцов.
С этой целью я пишу макрос:
M-x //go to buffer
C-x (//start the macro
C-s = // search for equalto sign
RET C-f C-f // reach to te alphabet 'p'
DEL // Delete
C-n C-x )//go to new line and Close the macro definition
C-x e
Нажатие e
дважды удалит p
, но в случае, если я хочу сделать то же самое до конца файла, как я могу сделать это я не могу продолжать нажимать e
, если у меня есть 20000 таких строк. Что следует сделать?
Пожалуйста, предложите регекс, так как это пример, а не реальный случай. Пожалуйста, не предлагайте любые elisp, мне удобно помнить ярлык для emacs.