I wonder why getrawtransaction doesn't return proper error like "No indexed transactions, run app with txindex=1".
It's not exactly useful for most users to get raw transactions for those that are confirmed. The client cannot tell if the user is trying to get an unconfirmed or confirmed transaction and it would just be a waste of time for users to index the transactions. Basic users just need information about their own transactions or from the mempool.