Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C#: Find all empty catch blocks

I am reviewing some code.

I have notice some empty catch blocks. Not a good idea since somethings do not work and you cannot see why.

Is there an easy way to find all empty try catch blocks in a solution?

like image 405
Shiraz Bhaiji Avatar asked Sep 28 '09 10:09

Shiraz Bhaiji


People also ask

Bahasa C digunakan untuk apa?

Meskipun C dibuat untuk memprogram sistem dan jaringan komputer namun bahasa ini juga sering digunakan dalam mengembangkan software aplikasi. C juga banyak dipakai oleh berbagai jenis platform sistem operasi dan arsitektur komputer, bahkan terdapat beberepa compiler yang sangat populer telah tersedia.

C dalam Latin berapa?

C adalah huruf ketiga dalam alfabet Latin. Dalam bahasa Indonesia, huruf ini disebut ce (dibaca [tʃe]).

Bahasa C dibuat pertama kali oleh siapa dan tahun berapa?

Bahasa pemrograman C ini dikembangkan antara tahun 1969 – 1972 oleh Dennis Ritchie. Yang kemudian dipakai untuk menulis ulang sistem operasi UNIX. Selain untuk mengembangkan UNIX, bahasa C juga dirilis sebagai bahasa pemrograman umum.


2 Answers

Expanded the accepted answer to satisfy all the conditions described below. Updated for Visual Studio 2017/2019, works for both C# and C++.

Use the find dialog (CTRL+SHIFT+F), turn on regular expressions and search for:

^(?!\/\/|\/\*).*catch\s*(?:\([^)]*\))*\s*\{\s*(?:(?:\/\/|\/\*).*(\*\/)?\s*)*\}

Matches:

catch {}
catch{}
catch{
}
catch 
{}
catch () {}
catch (...) {}
catch (int x) {}
catch (Exception x) {}
catch (Exception ex){
}
catch(...){
}
} catch (...){
/**/
}
} catch (...){
/**/
///
}
} catch (...){
//
//
/**/
}
catch (...)
{}
catch(...) { //single line
}
catch(...) { 
//single line}
catch(...) { 
//single line
}
catch(...) { /*multiline*/
}
catch(...) {
 /*multiline*/}
catch(...) {
 /*multiline*/
}
catch (...){ // int i = 0; }

Does not match:

// catch () {}
/* catch () {} */
catch (...){ int i = 0;}
catch (...){ 
int i = 0;}
catch (...){int i = 0;
}
catch (...){ 
// Comment
int i = 0;}
catch (...){ int i = 0; // Comment}
like image 38
Sverrir Sigmundarson Avatar answered Oct 15 '22 11:10

Sverrir Sigmundarson


Use use the global find dialog, turn on regular expressions and then search for:

catch:b*\([^)]*\):b*\{:b*\}
like image 192
Stefan Avatar answered Oct 15 '22 09:10

Stefan