OK, now it's not the weekend, so I'll include the AND clause for you:
CREATE OR REPLACE TRIGGER salary_update_trig BEFORE UPDATE ON test
DECLARE e_time EXCEPTION;
BEGIN
IF to_number(to_char(sysdate,'HH24')) NOT BETWEEN 10 AND 18
OR to_char(sysdate,'DAY') IN ('SATURDAY','SUNDAY') THEN
RAISE e_time;
END IF;
EXCEPTION
WHEN e_time THEN
raise_application_error(-20100,'blew up on update');
END;
I know the table name and times being tested are also a little different from what you need, but you'll just have to make those adjustments.
Now, as to why your code doesn't work - I saw the same problem you did, so I can only assume that RAISE_APPLICATION_ERROR doesn't work like a regular exception when invoked from within the executable code. Unfortunately, I'm having trouble finding this procedure in any documentation, so I haven't been able to confirm that yet. However, if you actually study the structure of the above code, you will see that I have declared and raised an explicit exception, then invoked RAISE_APPLICATION_ERROR from within the EXCEPTION section - at which time the code worked as desired.