prefer "expect(...).toThrow" over "try ... catch" in tests