Dlaczego tak
W C# wyjątek zgłasza się instrukcją throw, podając obiekt wyjątku utworzony operatorem new; ArgumentOutOfRangeException z nazwą parametru jasno informuje, który argument był poza zakresem. Brak new to błąd kompilacji, bo nazwa klasy nie jest metodą. Słowo raise pochodzi z Pythona, a return zwróciłby obiekt wyjątku jak zwykłą wartość — przerwania wykonania i obsługi w bloku catch by nie było.